前面已經介紹過 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 循環,這樣用戶就有“重新輸入”的機會了。