代码临时i++ and ++i的误解

最近研究代码临时,稍微总结一下,以后继续补充:

    不知在那本书上看到 ++i比i++要快(i++要需一个临时量变存储i的值后再++),就住记这个始终没测试,所以在写代码的时候 始终就应用++i认为它快。明天测试了下发明并非这么回事,始终被解误。所以写了单简的demo测试了下:

int main()
{
        int a,c;
	a = 0;

	a++;
	++a;

	c =a++;
	c = ++a;

	c = a+1;
	return 0;
}

    看下反汇编代码吧(Windows上):

    每日一道理
时间好比一条小溪,它能招引我们奔向生活的海洋;时间如同一叶扁舟,它将帮助我们驶向理想的彼岸;时间犹如一支画笔,它会指点我们描绘人生的画卷。
int a,c;
	a = 0;
00181B88  mov         dword ptr [a],0  
	a++;
00181B92  mov         eax,dword ptr [a]  
00181B98  add         eax,1  
00181B9B  mov         dword ptr [a],eax  
	++a;
00181BA1  mov         eax,dword ptr [a]  
00181BA7  add         eax,1  
00181BAA  mov         dword ptr [a],eax  
	c =a++;
00181BB0  mov         eax,dword ptr [a]  
00181BB6  mov         dword ptr [c],eax  
00181BBC  mov         ecx,dword ptr [a]  
00181BC2  add         ecx,1  
00181BC5  mov         dword ptr [a],ecx  
	c = ++a;
00181BCB  mov         eax,dword ptr [a]  
00181BD1  add         eax,1  
00181BD4  mov         dword ptr [a],eax  
00181BDA  mov         ecx,dword ptr [a]  
00181BE0  mov         dword ptr [c],ecx  

	c = a+1;
00181BE6  mov         eax,dword ptr [a]  
00181BEC  add         eax,1  
00181BEF  mov         dword ptr [c],ea
	return 0;
00181BF5  xor         eax,eax  
}

    一看就白明了

文章结束给大家分享下程序员的一些笑话语录: 刹车失灵
有一个物理学家,工程师和一个程序员驾驶着一辆汽车行驶在阿尔卑斯山脉 上,在下山的时候,忽然,汽车的刹车失灵了,汽车无法控制地向下冲去, 眼看前面就是一个悬崖峭壁,但是很幸运的是在这个悬崖的前面有一些小树 让他们的汽车停了下来, 而没有掉下山去。 三个惊魂未定地从车里爬了出来。
物理学家说, “我觉得我们应该建立一个模型来模拟在下山过程中刹车片在高 温情况下失灵的情形”。
工程师说, “我在车的后备厢来有个扳手, 要不我们把车拆开看看到底是什么 原因”。
程序员说,“为什么我们不找个相同的车再来一次以重现这个问题呢?”

posted @ 2013-05-03 20:06  坚固66  阅读(276)  评论(0编辑  收藏  举报