日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

break和continue理解

發布時間:2024/6/5 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 break和continue理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

以前對break和continue的使用都比較模糊,今天用了個簡單的例子明白了其中的用法。程序只是為了說明break和continue的區別,寫的很簡單。

?1?#include?<iostream>
?2?using?namespace?std;
?3?
?4?int?main()
?5?{
?6?????int?a[10][10]?=?{0};
?7?????for?(size_t?i?=?0;?i?!=?10;?++i)
?8?????????for?(size_t?j?=?0;?j?!=?10;?++j)
?9?????????????a[i][j]?=?i;
10?????
11?????for?(size_t?i?=?0;?i?!=?10;?++i)
12?????????for?(size_t?j?=?0;?j?!=?10;?++j)
13?????????{
14?????????????if?(a[i][j]?==?5)
15?????????????????break;
16?????????????if?(a[i][j]?==?4)
17?????????????????continue;
18?
19?????????????a[i][j]?=?4;
20?????????????a[i][j]?=?5;
21?????????}
22?
23?????return?0;

24?}?

?

來看看在VS2010下的第二個兩重循環的反匯編代碼 。

?1?for?(size_t?i?=?0;?i?!=?10;?++i)
?2?004148B3??mov?????????dword?ptr?[i],0??
?3?004148BD??jmp?????????main+0CEh?(4148CEh)??
?4?004148BF??mov?????????eax,dword?ptr?[i]??;使用break會跳轉到這里
?5?004148C5??add?????????eax,1??
?6?004148C8??mov?????????dword?ptr?[i],eax??
?7?004148CE??cmp?????????dword?ptr?[i],0Ah??
?8?004148D5??je??????????main+17Fh?(41497Fh)??
?9?????????for?(size_t?j?=?0;?j?!=?10;?++j)
10?004148DB??mov?????????dword?ptr?[j],0??
11?004148E5??jmp?????????main+0F6h?(4148F6h)??
12?004148E7??mov?????????eax,dword?ptr?[j]??
13?004148ED??add?????????eax,1??
14?004148F0??mov?????????dword?ptr?[j],eax??
15?004148F6??cmp?????????dword?ptr?[j],0Ah??
16?004148FD??je??????????main+17Ah?(41497Ah)??
17?????????{
18?????????????if?(a[i][j]?==?5)
19?004148FF??mov?????????eax,dword?ptr?[i]??
20?00414905??imul????????eax,eax,28h??
21?00414908??lea?????????ecx,[ebp+eax-198h]??
22?0041490F??mov?????????edx,dword?ptr?[j]??
23?00414915??cmp?????????dword?ptr?[ecx+edx*4],5??
24?00414919??jne?????????main+11Dh?(41491Dh)??
25?????????????????break;
26?0041491B??jmp?????????main+17Ah?(41497Ah)??;這里會跳轉到
27?????????????if?(a[i][j]?==?4)
28?0041491D??mov?????????eax,dword?ptr?[i]??
29?00414923??imul????????eax,eax,28h??
30?00414926??lea?????????ecx,[ebp+eax-198h]??
31?0041492D??mov?????????edx,dword?ptr?[j]??
32?00414933??cmp?????????dword?ptr?[ecx+edx*4],4??
33?00414937??jne?????????main+13Bh?(41493Bh)??
34?????????????????continue;
35?00414939??jmp???????main+0E7h?(4148E7h) ;這里也會跳轉
36?
37?????????????a[i][j]?=?4;
38?0041493B??mov?????????eax,dword?ptr?[i]??
39?00414941??imul????????eax,eax,28h??
40?00414944??lea?????????ecx,[ebp+eax-198h]??
41?0041494B??mov?????????edx,dword?ptr?[j]??
42?00414951??mov?????????dword?ptr?[ecx+edx*4],4??
43?????????????a[i][j]?=?5;
44?00414958??mov?????????eax,dword?ptr?[i]??
45?0041495E??imul????????eax,eax,28h??
46?00414961??lea?????????ecx,[ebp+eax-198h]??
47?00414968??mov?????????edx,dword?ptr?[j]??
48?0041496E??mov?????????dword?ptr?[ecx+edx*4],5??
49?????????}
50?00414975??jmp?????????main+0E7h?(4148E7h) ?;從這兩個跳轉的地址處我們就可以看出兩者使用的區別。

51?0041497A??jmp?????????main+0BFh?(4148BFh) ??

?上面的代碼主要看紅色部分加以理解就可以了。

得出結論:break是結束本層的循環,continue是結束本次的迭代。兩者的使用情況就得具體情況具體分析了。?

轉載于:https://www.cnblogs.com/StudyRush/archive/2011/04/05/2005682.html

總結

以上是生活随笔為你收集整理的break和continue理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。