迴圈控制

極為常見

當你學會了兩種不同的迴圈,也許你心中會有一些困惑「我一定要執行完迴圈裡的所有程式碼嗎?如果我的程式提前達成了預期的目標,可不可以提早結束?」。答案是肯定的,我們可以透過 continuebreak 來「控制迴圈」。

continue - 直接進入下一輪

continue 的中文是「繼續」意思,用來直接進入下一輪的迴圈循環。通常來說,continue 語法都會搭配一些判斷,表示只在某種情況發生時才強制進入下一圈:

for (int i = 1; i < 5; i++) {
    if (i == 3) continue;
    cout << i << ' ';
}

在這個例子中,當變數 i 的值為 3 時會使得 if 語句成立並執行 continue 語法,直接進入下一圈的迴圈。所以在這個例子中最後輸出的結果會長這樣。

1 2 4 

可以看到,i 等於 3 的時候沒有被輸出,這就是 continue 語法的作用!

break - 跳出迴圈

break 中文翻譯是休息、打破或結束的意思,它的用途就是直接跳出當前迴圈。先來看一個簡單的例子:

for (int i = 1; i < 5; i++) {
    if (i == 3) break;
    cout << i << ' ';
}

在這個例子中 i 等於 3 就會執行 break 語句。跟 continue 不一樣的是,程式不會輸出 4,因為在 i3 時執行 break 語法就結束迴圈了,i 變數甚至沒有變成 4 過。所以程式只會輸出:

1 2

break 與無限迴圈

上個單元我們有提到 while 的無限迴圈,不過在學到 break 後,我們可以使用 break 來更簡單的結束無限迴圈,因此就有了這樣的用法:

int apcs;

while (true) {
    cin >> apcs;
    if (apcs == 10) break;
}

break 語法還有一個方便的用法,就是當你不知道迴圈的終止條件、或是迴圈的終止條件很複雜時,可以透過 break 語法來更簡單的結束迴圈。

另外,true 這個值在 C++ 中代表 1,所以這個迴圈也可以簡寫成 while (1) 來達到相同的效果。

int apcs;

while (1) {
    cin >> apcs;
    if (apcs == 10) break;
}

小測驗

下列那個敘述是錯誤的?