久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

最好不要寫這樣的代碼: n=(++i)+(++i); n=(++i)+(++i)+(++i);

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2014年08月16日   【字體:

 不要寫如下類型的代碼: 

n=(++i)+(++i); 
n=(++i)+(++i)+(++i);
 
 
看看匯編就知道為什么了:
 
n=(++i)+(++i);的匯編 (i=5) :
 
00401090 mov ecx,dword ptr [ebp-8] 
00401093 add ecx,1
 
00401096 mov dword ptr [ebp-8],ecx 完成 i 自加1
 
00401099 mov edx,dword ptr [ebp-8] 結(jié)果放入edx
 
0040109C add edx,1
 
0040109F mov dword ptr [ebp-8],edx 完成第二次 i 自加1
 
004010A2 mov eax,dword ptr [ebp-8] 1 結(jié)果放入eax
 
004010A5 add eax,dword ptr [ebp-8] 2 eax <-- eax+i
 
004010A8 mov dword ptr [ebp-4],eax 3
 
看看最后3行代碼:1-->把 i 的值放入寄存器eax,
2-->把 i 的值和eax相加,這就是相當(dāng)于 i + i 了
 
3-->把eax的結(jié)果放入n中
 
結(jié)果就是n=i+i,而且 i 是經(jīng)過兩次自加后的終值。
 
所以 i 經(jīng)過兩次自加后 i = 7 ,n=7+7=14,而不是我們想象的 n = 6+7。
 
而且在不同的編譯器、不同的CPU的情況下,處理方式恐怕都會不同。
 
 
 
再看 n=(++i)+(++i)+(++i); 的匯編 (i=5) :
 
00401090 mov ecx,dword ptr [ebp-8]
 
00401093 add ecx,1
 
00401096 mov dword ptr [ebp-8],ecx 完成第一次 i 自加1
 
00401099 mov edx,dword ptr [ebp-8] 結(jié)果放入edx
 
0040109C add edx,1
 
0040109F mov dword ptr [ebp-8],edx 完成第二次 i 自加1
 
004010A2 mov eax,dword ptr [ebp-8] 結(jié)果放入eax
 
004010A5 add eax,dword ptr [ebp-8] eax <-- eax+i (eax= i + i)
 
004010A8 mov ecx,dword ptr [ebp-8] 結(jié)果放入ecx (ecx=i+i)
 
004010AB add ecx,1
 
004010AE mov dword ptr [ebp-8],ecx 完成第三次 i 自加1
 
004010B1 add eax,dword ptr [ebp-8] eax <-- eax+i
 
004010B4 mov dword ptr [ebp-4],eax 結(jié)果放入n
 
前8句代碼和n=(++i)+(++i);一樣、結(jié)果為14、這個值放入eax和ecx中、i=7
然后 i 自加1、i=8 --> eax= eax+i =14+8=22
 
一般認(rèn)為n=6+7+8=21、但是過程和我們的習(xí)慣想法不同。
 
使用picc(PIC單片機(jī)的編譯器)編譯的結(jié)果和過程和VC++6.0一樣。
 
這樣的代碼和我們思考的習(xí)慣相差較大、不用為宜。
 
當(dāng)然、類似n=(i++)+(++i);之類的代碼也不宜出現(xiàn),除非你對過程很熟悉、
 
或者你愿意經(jīng)常為了這幾句代碼去查看具體的執(zhí)行過程。
 
 
VC++6.0查看匯編:
 
F10進(jìn)入調(diào)試、view菜單里面的反匯編選項:view/debug window/diss.../ 
關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 日韩视频国产 | 男人的天堂久久 | 黄色a三级 | 免费激情网站 | 久久精品一区二区 | 午夜精品久久久久久久久久久久久 | 欧美一区二区在线看 | 色播久久久 | 日韩在线综合网 | 亚洲二区在线观看 | 四虎永久免费在线 | 91视频大全| 国产色网站 | 91精品国产综合久久精品图片 | 99国产精品久久久久老师 | 国产精品日日做人人爱 | 亚洲精品乱码8久久久久久日本 | 日本精品久久久久久久 | 91精品国产色综合久久 | 亚洲电影免费 | 国产一区二区 | 精品欧美一区二区精品久久久 | 精品九九| 国产高清视频 | 国产精品欧美一区二区三区 | 黄色大片在线 | 亚洲午夜精品视频 | 国产男女精品 | 国产一区二区三区四区五区3d | 色综合视频 | 欧美精品在线免费观看 | 欧美成人精品一区二区三区 | 日韩免费 | 欧美九九九 | 日韩国产一区二区三区 | 色综合视频 | 中文字幕一区二区三区四区 | 久久精品国产一区 | 国产一区二区三区在线 | 欧美成人专区 | 亚洲成人精品一区二区 |