根据运算符的优先级顺序,()在++或--等一元运算符之前计算。让我们看看下面的代码:
()
++
--
int x = 1; x = 2 + (x++);
如果先执行x++,则x的值应该更新为2,因此x的值应该为4。然而,在执行代码时,x的值是3。这是否意味着表达式的计算没有考虑x++周围的(),或者我错过了什么?
x++
x
4
3
xdyibdwo1#
我来解释一下。如果你把(x++)。它仍然被计算,但它的值在递增()操作之前使用。代码的顺序如下:1.(x)首先计算。此时x仍然是1,(x++)返回x**(1)**的原始值,然后将x递增到2。1.在计算括号中的x++之后,表达式变为x = 2 + 1,因为:
因此,在这一步结束时,表达式x = 2 + 1是3。1.最后,加法(3)的结果被赋值给x。所以x现在是3。
为了让代码返回4,您应该使用“x”(预递增运算符)此运算符首先递增x,然后返回x的更新值。如果在表达式中使用x,则x在使用其值之前递增。
我希望我解释得很好。:D个
bfnvny8b2#
表达式将从 left 到 right 进行计算。
括号并不表示何时计算 * 一元运算符 *。我建议阅读下面的 Java 教程。Operators (The Java™ Tutorials > Learning the Java Language > Language Basics)
2条答案
按热度按时间xdyibdwo1#
我来解释一下。
如果你把(x++)。它仍然被计算,但它的值在递增()操作之前使用。
代码的顺序如下:
1.(x)首先计算。此时x仍然是1,(x++)返回x**(1)**的原始值,然后将x递增到2。
1.在计算括号中的x++之后,表达式变为x = 2 + 1,因为:
因此,在这一步结束时,表达式x = 2 + 1是3。
1.最后,加法(3)的结果被赋值给x。所以x现在是3。
为了让代码返回4,您应该使用“x”(预递增运算符)此运算符首先递增x,然后返回x的更新值。如果在表达式中使用x,则x在使用其值之前递增。
我希望我解释得很好。:D个
bfnvny8b2#
()
在一元运算符(如++
或--
)之前计算。..."*表达式将从 left 到 right 进行计算。
括号并不表示何时计算 * 一元运算符 *。
我建议阅读下面的 Java 教程。
Operators (The Java™ Tutorials > Learning the Java Language > Language Basics)