在 C 語言的迴圈與 switch 語句中,break 與 continue 是改變執行流程的兩大關鍵字。雖然都能「跳出」某種結構,但語意與適用場景截然不同。本文深入解析兩者差異,並提供實戰範例。
switch 語句:結束分支,防止貫穿。for、while、do-while):立即終止整個迴圈,執行迴圈後的下一條語句。if 使用,滿足特定條件時提前退出。break 僅跳出「最內層」迴圈,外層繼續執行。if-else 條件判斷無效(常見新手誤區)。#include <stdio.h>
#include <conio.h> // getch()
int main(void) {
int count = 0;
char ch;
while (1) { // 無限迴圈
ch = '\0';
while (ch != 13 && ch != 27) { // 等待 Enter(13) 或 Esc(27)
ch = getch();
printf("%c\n", ch);
}
if (ch == 27) break; // 按 Esc 跳出外層迴圈
count++;
printf("第 %d 次輸入完成\n", count);
}
printf("程式結束\n");
return 0;
}
僅限迴圈(for、while、do-while)。遇到 continue 時,略過迴圈體剩餘語句,直接執行迴圈更新條件(for 的表達式 3)或條件判斷(while/do-while)。
| 關鍵字 | while 結構示意 | 效果 |
|---|---|---|
| break | while (expr1) {
...
if (expr2) break;
...
} | 終止整個迴圈 |
| continue | while (expr1) {
...
if (expr2) continue;
...
} | 跳過本輪剩餘碼,進入下一輪判斷 |
#include <stdio.h>
#include <conio.h>
int main(void) {
char ch;
while (ch != 13) { // 非 Enter 繼續
ch = getch();
if (ch == 0x1B) continue; // 按 Esc 不輸出,直接下一輪
printf("%c\n", ch);
}
return 0;
}
break 不能跳出單純的條件判斷,只能跳出迴圈或 switch。goto 或重構為函式配合 return。continue 可避免深層縮排,提升可讀性。break 是「結束大會」,continue 是「跳過這項議程」。熟練掌握兩者差異,能寫出更高效、結構更清晰的迴圈程式碼。