执行时(幕后)会发生什么?
int x = 7;
x = x++;
也就是说,当一个变量在一条语句中被递增并分配给自己时?我编译并执行了这个。即使在整个表述之后X仍然是7。在我的书里,它说x是递增的!
执行时(幕后)会发生什么?
int x = 7;
x = x++;
也就是说,当一个变量在一条语句中被递增并分配给自己时?我编译并执行了这个。即使在整个表述之后X仍然是7。在我的书里,它说x是递增的!
当前回答
这意味着: x++不等于X = X +1
因为:
int x = 7; x = x++;
x is 7
int x = 7; x = x = x+1;
x is 8
现在看来有点奇怪:
int x = 7; x = x+=1;
x is 8
非常依赖于编译器!
其他回答
++x为增量前-> x在使用前为增量 x++是后增量-> X在使用后递增
int x = 7; -> x get 7 value <br>
x = x++; -> x get x value AND only then x is incremented
我认为这个争议是可以解决的,不需要进入代码,只需要思考。
考虑i++ & ++i作为函数,比如Func1和Func2。
现在我= 7; Func1(i++)返回7,Func2(++i)返回8(大家都知道)。在内部,这两个函数都将i增加到8,但它们返回不同的值。
i = i++调用函数Func1。在函数内部,i增加到8,但完成后函数返回7。
所以最终7被分配给i(最后i = 7)
x = x++;
等于
int tmp = x;
x++;
x = tmp;
这意味着: x++不等于X = X +1
因为:
int x = 7; x = x++;
x is 7
int x = 7; x = x = x+1;
x is 8
现在看来有点奇怪:
int x = 7; x = x+=1;
x is 8
非常依赖于编译器!
x = x++;
这是后增量操作符。它应该理解为“使用操作数的值,然后增加操作数”。
如果你想要发生相反的情况,即“增加操作数,然后使用操作数的值”,你必须使用预增加操作符,如下所示。
X = ++ X;
这个运算符首先将x的值加1,然后将值赋回给x。