Java中的括号和一元运算符优先级

4nkexdtk  于 9个月前  发布在  Java
关注(0)|答案(2)|浏览(75)

根据运算符的优先级顺序,()++--等一元运算符之前计算。让我们看看下面的代码:

int x = 1;
x = 2 + (x++);

如果先执行x++,则x的值应该更新为2,因此x的值应该为4。然而,在执行代码时,x的值是3。这是否意味着表达式的计算没有考虑x++周围的(),或者我错过了什么?

xdyibdwo

xdyibdwo1#

我来解释一下。
如果你把(x++)。它仍然被计算,但它的值在递增()操作之前使用。
代码的顺序如下:
1.(x
)首先计算。此时x仍然是1,(x++)返回x**(1)**的原始值,然后将x递增到2。
1.在计算括号中的x++之后,表达式变为x = 2 + 1,因为:

  • 后递增运算符x返回x的当前值,然后递增x。**因此,在表达式 *x中返回x的当前值,(为1)**然后递增x为2。

因此,在这一步结束时,表达式x = 2 + 1是3。
1.最后,加法(3)的结果被赋值给x。所以x现在是3。

为了让代码返回4,您应该使用“x”(预递增运算符)此运算符首先递增x,然后返回x的更新值。如果在表达式中使用x,则x在使用其值之前递增。

我希望我解释得很好。:D个

bfnvny8b

bfnvny8b2#

  • ".根据运算符的优先级顺序,()在一元运算符(如++--)之前计算。..."*

表达式将从 leftright 进行计算。

  • Java语言规范-第15章。表达方式 *
  • "..“*

括号并不表示何时计算 * 一元运算符 *。
我建议阅读下面的 Java 教程。
Operators (The Java™ Tutorials > Learning the Java Language > Language Basics)

相关问题