楼主你理解错了,你这里应该是先申请一个新的地址(左边x)并赋值为3,然后右边地址(原地址)x再自增1
首先jvm会读取右边x++中x的地址,再读取左边x的地址,将右边地址的值赋值给左边的地址,然后将右边的地址的数据自增1;
再次循环时,又会申请一个新的地址,并赋值为3,右边地址x再自增1;
因此最终x一直是3,不管循环多少次
如果按你说的,x先自增后已经变成4了,这时再赋值,哪来的3赋值给左边呢?
如果改成x=++x,那么就是先自增,再赋值了。
给个小题目给你:
int x=3;
x=x+(x++)+(++x);
输出x的值为多少? |
|