基于 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
预递增:递增值并使用新值进行计算
后递增:记住旧值,用于此计算,然后递增