执行时(幕后)会发生什么?

int x = 7;
x = x++;

也就是说,当一个变量在一条语句中被递增并分配给自己时?我编译并执行了这个。即使在整个表述之后X仍然是7。在我的书里,它说x是递增的!


当前回答

int x = 7;
x = x++;

它在C和Java中有未定义的行为,请参阅这个答案。这取决于编译器发生了什么。

其他回答

int x = 7;
x = x++;

它在C和Java中有未定义的行为,请参阅这个答案。这取决于编译器发生了什么。

增量发生在x被调用之后,所以x仍然等于7。当调用x时,++x将等于8

因为x++在将值赋值给变量后会增加值。 因此,在执行这一行时:

x++;

变量x仍然有原始值(7),但是在另一行再次使用x,例如

System.out.println(x + "");

结果是8。

如果您想在赋值语句中使用x的递增值,请使用

++x;

这将使x增加1,然后将该值赋给变量x。

(编辑) 不是x = x++,而是x++;前者将x的原始值赋给自己,所以它实际上在这一行上什么也不做。

x = x++;

等于

int tmp = x;
x++;
x = tmp;

++x为增量前-> x在使用前为增量 x++是后增量-> X在使用后递增

int x = 7; -> x get 7 value <br>
x = x++; -> x get x value AND only then x is incremented