【发布时间】:2016-05-23 07:55:30
【问题描述】:
我阅读了一些关于一元运算符的帖子: What is the Difference between postfix and unary and additive in java "C - C++" joke about postfix/prefix operation ordering
还有一些。
但是,我还是不明白到底是什么时候改变了值。
例如:
int x = 1;
x = x++;
System.out.print("x = x++ ==> ");
System.out.print(" x = " + x);
System.out.println();
int x = 1;
x = x++ + x++;
System.out.print("x = x++ + x++ ==> ");
System.out.print(" x = " + x);
System.out.println();
输出是:
x = x++ ==> x = 1
x = x++ + x++ ==> x = 3
所以在第一个块中x 被分配给x,然后递增,但该值从未使用过,否则输出将是x = 2。
在第二个块中,如果我理解正确,第一个 x++ 在分配之前评估,第二个 x++ 在之后评估但从未使用过。
如果在第二个块中,两个 x++ 在赋值后都被评估但从未使用过,则输出将是 x = 2。如果两者都被使用,输出将是x = 4。
所以总结一下 - 我仍然对何时以及如何准确完成增量感到困惑。
【问题讨论】:
-
@AndyTurner 我读了。没看懂。
标签: java operators unary-operator