执行时(幕后)会发生什么?
int x = 7;
x = x++;
也就是说,当一个变量在一条语句中被递增并分配给自己时?我编译并执行了这个。即使在整个表述之后X仍然是7。在我的书里,它说x是递增的!
执行时(幕后)会发生什么?
int x = 7;
x = x++;
也就是说,当一个变量在一条语句中被递增并分配给自己时?我编译并执行了这个。即使在整个表述之后X仍然是7。在我的书里,它说x是递增的!
当前回答
x = x++;
等于
int tmp = x;
x++;
x = tmp;
其他回答
X确实增加了。但是你把原来的x值赋回了自身。
x = x++;
x++增加X并返回其旧值。 X =将旧值赋回给自身。
最后,x被赋回了它的初始值。
x = x++;
这是后增量操作符。它应该理解为“使用操作数的值,然后增加操作数”。
如果你想要发生相反的情况,即“增加操作数,然后使用操作数的值”,你必须使用预增加操作符,如下所示。
X = ++ X;
这个运算符首先将x的值加1,然后将值赋回给x。
因为x++在将值赋值给变量后会增加值。 因此,在执行这一行时:
x++;
变量x仍然有原始值(7),但是在另一行再次使用x,例如
System.out.println(x + "");
结果是8。
如果您想在赋值语句中使用x的递增值,请使用
++x;
这将使x增加1,然后将该值赋给变量x。
(编辑) 不是x = x++,而是x++;前者将x的原始值赋给自己,所以它实际上在这一行上什么也不做。
当你为x重新赋值时,它仍然是7。尝试x = ++x,你会得到8个其他的
x++; // don't re-assign, just increment
System.out.println(x); // prints 8
增量发生在x被调用之后,所以x仍然等于7。当调用x时,++x将等于8