讲个有趣的内容
int a=0;
for(int i=0;i<2;++i)
{
a=a++;
System.out.println(a);
}
System.out.println(a);
}
执行完a是什么?
在C++下测试(转成c++的语法)
不同的编译器有的是1,有的是2.
在JAVA下测试是1。
为什么会这样
我先在eclipse里run一下,会生成一个class文件
然后我在cmd里javap -c 看看生成的字节码是啥情况
谜底揭晓。
可以这么想
a=a++;
是先把a的数取出来,放在常数栈里面,然后对变量栈里的a加1;
但是这里有个赋值,所以他还做了个store,就是把常数栈顶的值弹出来给a,那就等于没自增