C中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 循環,這樣用戶就有“重新輸入”的機會了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章