錯,continue語句的作用不是結束整個循環(huán)的執(zhí)行,而是結束本次循環(huán),跳過循環(huán)體中剩余的語句,直接進入到下次循環(huán)中,準備再次執(zhí)行循環(huán)體。
continue 語句的作用是結束本次循環(huán),跳過循環(huán)體中剩余的語句而強制進入下一次循環(huán)(回到循環(huán)體的開頭準備再次執(zhí)行循環(huán)體)。continue語句只用在 while、for 循環(huán)中,常與 if 條件語句一起使用,判斷條件是否成立。
使用方式
continue語句只在循環(huán)語句中。
在循環(huán)體中的語句集合執(zhí)行中,continue語句用于結束本次循環(huán)。在for循環(huán)中跳至執(zhí)行循環(huán)步長語句,以準備測試下一次循環(huán)的條件;在while循環(huán)中,則直接跳到循環(huán)條件測試。例如,下面的代碼把100~200之間能被3整除的數提出,其余的都能輸出:
for(int n=100;n<=200;++n) { if(n%3==0) continue; cout<<n<<endl; }
非必要性
continue語句總是有條件執(zhí)行的。
循環(huán)體中,語句執(zhí)行到含有continue語句的條件語句時,可以將后面的語句集合分成兩部分,其中第一部分中含有continue語句:
循環(huán)體: {...} if(條件) {第一部分(包含continue語句)} {第二部分} 通過將if(){}語句改寫成if-else語句,可將continue語句省略掉,并且邏輯語義不變: 循環(huán)體: {...} if(條件) {第一部分} else {第二部分}
如果本來就如上面改寫之后的循環(huán)體結構,那么continue語句根本就是多余的,因為執(zhí)行了if語句的第一部分,通過if結構就直接跳過屬于else的第二部分了。
如果第一部分只有一條continue語句,則在省略了continue語句之后,得到:
if(條件) {} else {第二部分} //他可以改寫成: if(!條件) {第二部分}
也就是說,只要把條件反一下,就可以完成改寫。例如,使用方式中的一段代碼可以表示為:
for (int n=100; n<=200;++n) if(n%3!=0) cout<<n<<endl;
得到沒有continue語句的代碼。因此,循環(huán)中的continue語句并不是必須的。
循環(huán)體描述計算過程。在使用continue的地方,對于在非必要性一段中所描述的第一部分和第二部分集合:
(1)不應該是并列計算功能的結構,因為,并列結構用if-else語句可以描述得更清楚,不需要continue語句;
(2)其主計算也不在第一部分,因為,用一個if語句把主計算框起來,并用continue語句排斥后續(xù)部分,在設計上有點頭重腳輕。
當循環(huán)體在執(zhí)行主計算過程中,使用continue語句適當過濾一些不符合主計算條件的情形,可以使邏輯結構清晰。
大多數循環(huán)體的結構都不會很復雜,因為采用合理的編程方法可以適當避免過程體過分龐大。如果優(yōu)化等處理使循環(huán)體簡潔起來的時候,不失時機地使用continue語句,便可以使結構更加清晰。
continue與break的區(qū)別
continue語句和break語句的區(qū)別是:
continue語句只結束本次循環(huán)體的執(zhí)行,而不是中止整個循環(huán),而break語句則是結束本循環(huán)語句,不再進行循環(huán)條件判斷。