break和continue,C語言break和continue的用法和區別

2020-07-16 10:04:23
break 語句很重要,用得非常多,初學者一定要掌握。continue 語句雖然沒有 break 語句用得多,但也經常用到,而且不可或缺,需要用到 continue 的時候其他語句是無法替代的。

前面已經介紹過 break 語句,它不僅可以跳出“迴圈體”,還可以跳出 switch。但事實上,break 也只能用於這兩種情況。break 語句不能用於迴圈語句和 switch 語句之外的任何其他語句中。

不管是 for 迴圈,還是 while 迴圈,或者是 do…while 迴圈,都可以用 break 跳出來,但是 break 只能跳出一層迴圈。當有多層迴圈巢狀的時候,break只能跳出“包裹”它的最裡面的那一層迴圈,無法一次跳出所有迴圈。

同樣,在多層 switch 巢狀的程式中,break 也只能跳出其所在的距離它最近的 switch。但多層 switch 巢狀實在是少見。

continue 的用法十分簡單,其作用為結束本次迴圈,即跳過迴圈體中下面尚未執行的語句,然後進行下一次是否執行迴圈的判定。

continue和break的區別

continue 語句和 break 語句的區別是,continue 語句只結束本次迴圈,而不是終止整個迴圈。break 語句則是結束整個迴圈過程,不再判斷執行迴圈的條件是否成立。而且,continue 只能在迴圈語句中使用,即只能在 for、while 和 do…while 中使用,除此之外 continue 不能在任何語句中使用。

所以,再次強調:continue 不能在 switch 中使用,除非 switch 在迴圈體中。此時 continue 表示的也是結束回圈體的本次迴圈,跟 switch 也沒有關係。

例如,下面為使用switch模擬電梯執行的程式碼:
# include <stdio.h>
int main(void)
{
    int val;  //variable的縮寫, “變數”的意思
    printf("請輸入您想去的樓層:");
    while (1)
    {
        scanf("%d", &val);
        switch (val)
        {
        case 1:
            printf("1層開!n");
            break;  //跳出switch
        case 2:
            printf("2層開!n");
            break;  //跳出switch
        case 3:
            printf("3層開!n");
            break;  //跳出switch
        default:
            printf("該層不存在, 請重新輸入:");
            continue;  //結束本次while迴圈
        }
        break;  //跳出while
    }
    return 0;
}
輸出結果是:
請輸入您想去的樓層:4
該層不存在, 請重新輸入:3
3層開!

此時在 default 中如果不使用 continue 的話,那麼最後的“該層不存在,請重新輸入:”仍然不起作用。它雖然能輸出,但輸出之後直接就執行後面的 break 了,使用者仍然沒有重新輸入的機會。而加 continue 之後就會結束本次 while 迴圈,即後面的 break 語句本次就不會執行,而是直接進入 while 迴圈,這樣使用者就有“重新輸入”的機會了。