作者: 谭立文 时间: 2012-10-12 22:59
int a = 1;
m = a++; m = 1 因为a++是先赋值然后再自增
a = a++; a = a++ 和 a = m 效果是一样的作者: 马磊 时间: 2012-10-12 23:00
看了崔老师的视频,发现了问题所在,原来一直都理解错了。只知道a++是赋值后自加1,其实在内存里不是这样的。
先说一般情况下 :
例如 int b=a++;此语句会先在内存空间中创建一个b的区域,然后把a的值放入到一个临时空间,然后a的值自加1,然后再把临时空间里的值放到b中去。这时候b的值还是原来a的值,而a已经是加1后的值了,所以通俗说法是先赋值后++;
在这道题里,a=a++,同样分析一下是:a先把自己的值放到一个临时空间里,然后a再自加1,然后(这里就是问题所在了)临时空间里a原来的值又赋值给了a,所以a还是原来的值。因此是有a+1的过程的,不过后来被临时空间里原来的a值覆盖掉了。 作者: 马磊 时间: 2012-10-12 23:11