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 迴圈,這樣使用者就有“重新輸入”的機會了。