Break 和 Continue

有時候我們可能會想要中途停止或是跳過迴圈的執行。比如說持續向使用者要求輸入數字直到輸入的數字符合規範,或是如果某條件成立,我們就不執行此次迴圈內的程式碼。

這時候我們就必須利用 breakcontinue 幫我們完成這樣的工作!

總而言之,它們分別有這樣的功能:

  • break:當在迴圈內遇到 break 時,迴圈會立即中止,並且程式會繼續執行迴圈外的下一條程式碼。
  • continue:當在迴圈內遇到 continue 時,迴圈會跳過回圈內剩餘的程式碼,並強迫開始下一次的循環。

接下來讓我們來分別討論這兩個主題吧!

Break

讓我們直接來看 break 的應用。

在下面的例子中,使用者可以最多輸入 5 個數字,但使用者也可以輸入 -1 讓回圈提前終止。

而程式碼最終會輸出使用者輸入的數字的加總(除了 -1)。

int main()
{
    int sum = 0;

    // 使用者可以輸入最多 5 個數字
    for (int i = 0; i < 5; ++i)
    {
        std::cout << "輸入一個數字,或是輸入 -1 結束: ";
        int num;
        std::cin >> num;

        // 如果使用者輸入 -1 則終止迴圈
        if (num == -1)
            break; // 跳出迴圈

        // 否則加上結果
        sum += num;
    }

    // 迴圈被終止後,程式碼仍會繼續執行迴圈下的程式碼
    std::cout << "最終加總是: " << sum << std::endl;

    return 0;
}

我們可以看到範例輸出為:

輸入一個數字,或是輸入 -1 結束: 3
輸入一個數字,或是輸入 -1 結束: 2
輸入一個數字,或是輸入 -1 結束: -1
最終加總是: 5

是不是非常好懂呢!

Continue

看完 break 後我們來看什麼是 continue

break 讓我們有能力「跳出」迴圈,而 continue 則是讓我們有能力可以「跳過」這一次的迴圈。

讓我們直接來看一個例子:

int main()
{
    for (int i = 1; i <= 20; ++i)
    {
        // i 不是 5 的倍數
        if (i % 5 != 0)
            continue;

        std::cout << i << " 可以被 5 整除" << std::endl;
    }
    return 0;
}

這個程式非常簡單,就是印出數字 1 到 20 之間可以被 5 整除的數字。

我們可以看到,若不能被 5 整除,那就會執行 continue,直接跳到迴圈的底部並執行下一次迴圈。

因此以上程式碼的輸出會是:

5 可以被 5 整除
10 可以被 5 整除
15 可以被 5 整除
20 可以被 5 整除

如果我們利用 break 代替 continue,那麼程式碼什麼也都不會印出來,而且迴圈在執行第一次之後就會被強制終止了!

這就是 breakcontinue 最不一樣的地方。

總結

這章介紹的觀念非常簡單,因此個別用一個簡單的範例讓你們看看實際運行的結果。

這兩個關鍵字在程式中非常容易看到,因為這是用來控制程式碼流程的必要關鍵字!

因此,清楚他們兩個實際運行時所造成的差異非常重要!

那這章就到這裡啦~

如果有學到東西的話歡迎留下五星評價喔!