天天看點

《編寫高品質代碼:改善c程式代碼的125個建議》——建議26:差別continue與break語句

本節書摘來自華章計算機《編寫高品質代碼:改善c程式代碼的125個建議》一書中的第3章,建議26,作者:馬 偉 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

在c語言中,continue語句和break語句的差別如下。

(1)對于continue語句

它隻結束本次循環,而不是終止整個循環的執行。也就是說,在while循環、do/while循環和for循環中,continue語句将跳過循環體中剩餘的語句而強制執行下一次循環,即結束本次循環,跳過循環體中下面尚未執行的語句,接着進行下一次是否執行循環的判定,如下面的示例代碼所示:

在上面的代碼中,為了示範continue 語句的作用,利用continue語句輸出0到19之間不能被2整除的數。其中,當i能被2整除時,将執行continue語句,結束本次循環,并跳過尚未執行的printf("%4d",i) 語句,接着執行下一次循環與判斷語句 if (i%2==0)。隻有i不能夠被2整除時才執行printf(“%4d”,i) 語句來輸出結果,如圖3-3所示。

《編寫高品質代碼:改善c程式代碼的125個建議》——建議26:差別continue與break語句

(2)對于break語句

相對于continue語句,break語句則是結束整個循環過程,不再判斷執行循環的條件是否成立。也就是說,在分支結構程式設計中用break語句可以跳出switch語句塊,繼續執行switch下面的語句。而在while循環、do/while循環和for循環中,break語句用來終止本層循環,繼續執行該循環外的語句。

現在,如果将上面示例代碼中的continue語句修改成break語句結果會是什麼呢?如下面的示例代碼所示:

其實,從代碼中可以看出,當for循環執行第一次循環時(即i的值為0),表達式0%2的值為0,是以,if (i%2==0) 語句傳回真,進而執行break語句,終止整個for循環,最後程式什麼都不輸出。

最後還需要注意的是,break語句不能用于循環語句和switch語句之外的任何其他語句中。在循環語句中,break語句與continue語句一般與if語句一起使用。

繼續閱讀