潘贵 发表于 2013-5-13 13:38 a=a++是a先把原来的值赋给了a,然后啊再自增。当执行到b=a ++的时候a的值是4了,这时a把4赋给了b,a再自增 ...
王靖远 发表于 2013-5-13 13:39 因为你打印的第一个a++是 自增后的a也就是3,你打印的第二个a++是 a自增一次后的也就是4.你再第三次打印的 ...
崔宏奎 发表于 2013-5-13 13:45 a++ 实际上是三行代码: a=3; 4=3+1;
神之梦 发表于 2013-5-13 14:15 我测试了下打印第三次,结果是4,不是5,原因可能也不是这样的
神之梦 发表于 2013-5-13 14:11 先赋给a,然后不也自增了么,怎么还是3?
王靖远 发表于 2013-5-13 14:58 int a=3,b; a=a++;//先是把a赋值给a,然后a第一次自增 System.out.println(a);//打印出来是a的值
潘贵 发表于 2013-5-13 15:43 a被赋值在栈内存中,a++在方法区中,当a没有被调用时(打印个人认为不算是调用),栈中的值是3,当被调用 ...
QQ截图20130513155642.jpg (31.64 KB, 下载次数: 0)
下载附件
2013-5-13 16:00 上传
QQ截图20130513155617.jpg (173.03 KB, 下载次数: 0)
QQ截图20130513161344.jpg (51.7 KB, 下载次数: 0)
2013-5-13 16:14 上传
崔宏奎 发表于 2013-5-13 16:23 由于没有反汇编过JAVA,就反汇编了一下C语言的,先贴源码(有一行发现打错了。。。郁闷,不过不影响):