Java 中的后缀和前缀运算符的行为不同



基于 Oracle: Operator Doc Oracle

后缀渐进和十进运算符的优先级高于前缀运算符。

但是当我尝试这个例子时:

int x = 1;
System.out.println(++x * x++); // prints 4
x=1;
System.out.println(x++ * ++x); // prints 3

如果我们按照运算符优先级,输出应该是 :3 and 3而不是4 and 3

任何帮助,不胜感激。

这只是后/前增量元素:

(++x * x++);
++x = 1 becomes 2 and use 2 for value
x++ = use 2 for value, and then 2 becomes 3
2*2 = 4

(x++ * ++x);
x++ = use 1 for value, and then 1 becomes 2
++x = 2 becomes 3 and use 3 for value
1*3 = 3
预递增

:递增值并使用新值进行计算

后递增:记住旧值,用于此计算,然后递增

最新更新