在switch case 語句中能否使用continue關鍵字?為什麼?
毋庸置疑,在switch case 語句中不能使用continue 關鍵字。continue語句的作用是跳出本次迴圈,轉入執行下一次迴圈。故而,continue語句只能用於迴圈語句中,而switch case語句為多分支選擇語句,不是迴圈語句,所以在switch case 語句中是不能使用continue 關鍵字的(除非把continue關鍵字放在迴圈語句中)。可以通過下面的例子簡單驗證:
源程式####
#include<stdio.h> #include<math.h> int main() { int score = 0; printf("請輸入學生成績:\n"); scanf("%d", &score); switch ((score / 10)) { case 9: printf("優秀\n"); break; case 8: printf("成績等級為:良好\n"); break; case 7: //continue; case 6: printf("成績等級為:及格\n"); break; case 5: case 4: case 3: case 2: case 1: case 0: printf("成績等級為:不及格\n"); break; default: printf("輸入成績有誤!\n"); } return 0; }
這是我們在剛開始接觸C語言的時候都遇到過的例子,從鍵盤輸入一個學生成績,判斷輸出相應等級,當我們在程式碼中加入continue關鍵字時,如果能夠使用,則我們期望它跳過case6後面的語句。但事與願違,程式編譯會報錯。提示:非法continue,continue只能在迴圈中使用。這也進一步驗證在switch case語句中不能使用continue關鍵字。
但是當我們把switch case 語句加入一個迴圈中時,使用continue語句可以編譯通過,但是我們對迴圈的控制又不好處理,在迴圈中使用switch case語句比較少見,所以個人覺得,在switch case 語句中最好不要出現continue關鍵字。
continue是我們在寫程式碼時使用比較多的關鍵字,使用continue關鍵字時需要注意一下幾點:
① continue的作用是結束本次迴圈,即跳過迴圈體中下面尚未執行的部分,接著進行下一次是否執行迴圈的判定,用來加速迴圈;
② continue語句只結束本次迴圈,而不是終止整個迴圈的執行;
③ 在while迴圈內部的continue關鍵字會使程式直接到迴圈判斷條件部分。即:本次迴圈中continue後面的程式碼不會再執行,而是直接跳到while語句的判斷部分,進行下一次迴圈的入口判斷。
④ 在for迴圈中,continue跳出迴圈後來到迴圈變數的調整部分,例如:執行 i++表示式。