我对post 和pre 运算符感到困惑,例如以下代码
int x = 10; x = x++; sysout(x);
会打印10吗?
它打印10,但我希望它应该打印11
但是当我这样做
x = ++x; instead of x = x++;
它会按照我的预期输出11,所以为什么x = x ++; 不会改变x的值?
否,正确的打印输出为10。理解结果背后原因的关键是预分配++x和后x++分配复合分配之间的差异。当使用预增量时,表达式的值在执行增量后获取。但是,当您使用后递增时,表达式的值 在 递增 之前 被获取,并 在 递增结果写回到变量之后被存储以供以后使用。
++x
x++
这是导致您看到的事件的顺序:
x
10
++
11