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