+-

我在教室里编写一些代码,遇到了以下问题:
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-订单优先级||操作顺序 - 乐贴网