+-
java-订单优先级||操作顺序
我在教室里编写一些代码,遇到了以下问题:

int x 14; 
int y 3; 

x = x-- % y--'

编译后的结果是
‘x = 2’
‘y = 2’

我很难理解这个特定场景的顺序或操作.
我的逻辑基于Oracle运算符优先级
(这里)
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html

将得出以下结论:
x =(x = x -1)%(y = y-1)(由于顺序优先)

因此:x = 13%2

x = 1

y = 2

我错了,请告诉我为什么.我戴上马帘.
提前致谢.

最佳答案
这个:

int x = 2;
println(x--);

打印2,但x保留为1.后缀递增和递减为您提供变量更改前的值.

这个:

int x = 2;
println(--x);

打印1并将x保留为1.在更改变量后,前缀递增和递减为您提供值.

编辑:

如果您在相同的表达式中分配给x,则分配最后发生.

int x = 3;
x = 2*(x--);

x–的值为3(x之前的值递减).因此,在分配之后,在这种情况下,x的最终值为6.

因此,对于您的示例:

int x = 14;
int y = 3;

x = x-- % y--;

x–的值为14(x之前的值递减). y–的值为3(y之前的值递减).因此x被分配给14%3 == 2. y保持其递减值2.

点击查看更多相关文章

转载注明原文:java-订单优先级||操作顺序 - 乐贴网