x++ 和 ++x

int x=0
int y=++x + x++ + x++
先计算++x,则变为int y=1 + x++ + x++,此时x=1;再计算x++,因为是先使用x再进行自增运算,所以变为int y=1 + 1 + x++,此时x为2;继续计算x++,同理,先使用x再进行自增运算,所以变为int y=1 + 1 + 2,此时进行x自增运算,x为3。

即x++是先赋值后加1,++x是先加1然后赋值。

下面是字节码文件分析:

preview

p++分3步执行,执行后p的值在内存中被更新,但是后续使用这个表达式的值用的是加1之前的值(存在寄存器里)。

++p分两步执行,之后使用这个表达式的值用的是内存里p更新后的值(如果不用值一条指令就够了)。

如下例:




猜你喜欢

转载自blog.csdn.net/hasagei_ly/article/details/78854179