为什么结果是8而不是9?
按我的逻辑:
++x
给出4 x = 8
x
之后应该增加x++
语句,因此它应该是9。我的逻辑出了什么问题?:
int x = 3;
x = x++ + ++x;
System.out.println(x); // Result: 8
答案 0 :(得分:21)
您应该注意表达式从左到右进行评估:
首先x++
递增x但返回之前的值3。
然后++x
递增x并返回新值5(在两个增量之后)。
x = x++ + ++x;
3 + 5 = 8
但是,即使您将表达式更改为
x = ++x + x++;
你仍然会得到8
x = ++x + x++
4 + 4 = 8
这次,一旦将加法结果赋给x,就会覆盖x(x++
)的第二个增量。
答案 1 :(得分:1)
++ x称为preincrement,x ++称为postincrement。 x ++给出前一个值,++ x给出新值。