首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言 break 與 continue 語句詳解:流程控制關鍵技巧

     編輯:關於C語言

在 C 語言的迴圈與 switch 語句中,break 與 continue 是改變執行流程的兩大關鍵字。雖然都能「跳出」某種結構,但語意與適用場景截然不同。本文深入解析兩者差異,並提供實戰範例。

break 語句:徹底跳出當前結構

適用範圍

  • switch 語句:結束分支,防止貫穿。
  • 迴圈(for、while、do-while):立即終止整個迴圈,執行迴圈後的下一條語句。

核心特性

  1. 通常搭配 if 使用,滿足特定條件時提前退出。
  2. 在巢狀迴圈中,break 僅跳出「最內層」迴圈,外層繼續執行。
  3. 對 if-else 條件判斷無效(常見新手誤區)。

範例 6-8:鍵盤輸入控制的無限迴圈退出

#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;
}

continue 語句:跳過本次迭代,直接進入下一輪

適用範圍

僅限迴圈(for、while、do-while)。遇到 continue 時,略過迴圈體剩餘語句,直接執行迴圈更新條件(for 的表達式 3)或條件判斷(while/do-while)。

break vs. continue 對比

關鍵字while 結構示意效果
break
while (expr1) {
    ...
    if (expr2) break;
    ...
}
終止整個迴圈
continue
while (expr1) {
    ...
    if (expr2) continue;
    ...
}
跳過本輪剩餘碼,進入下一輪判斷

範例 6-9:過濾特定按鍵輸出

#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;
}

常見錯誤與最佳實踐

  • 誤用於 if-else: break 不能跳出單純的條件判斷,只能跳出迴圈或 switch。
  • 巢狀迴圈陷阱: 需跳出多層時,可用標誌變數、goto 或重構為函式配合 return。
  • 善用 continue 精簡邏輯: 若迴圈開頭有多項「不符合條件即跳過」檢查,用 continue 可避免深層縮排,提升可讀性。

總結

break 是「結束大會」,continue 是「跳過這項議程」。熟練掌握兩者差異,能寫出更高效、結構更清晰的迴圈程式碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved