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

C 語言 break 語句實戰:提前結束迴圈

     編輯:關於C語言

break 核心作用

立即跳出**最近一層** `switch`、`for`、`while`、`do-while`**,程式繼續執行該結構之後的第一條語句。

範例 1:在 for 迴圈中提前結束

#include 

int main(void) {
    for (int i = 1; i <= 10; ++i) {
        if (i == 6) {
            printf("遇到 %d,提前結束迴圈\n", i);
            break;  // 直接跳出 for,不再執行 i=6~10
        }
        printf("%d ", i);
    }
    printf("\n迴圈結束後的程式碼\n");
    return 0;
}

輸出

1 2 3 4 5 遇到 6,提前結束迴圈
迴圈結束後的程式碼

範例 2:搜尋陣列找到即停止

int find_index(const int *arr, size_t n, int target) {
    for (size_t i = 0; i < n; ++i) {
        if (arr[i] == target) return (int)i;  // 找到直接返回 (比 break 更乾淨)
    }
    return -1;  // 未找到
}

提示:函數中搜尋找到即返回,比 `break` + 旗標變數更簡潔。

break 只能跳出一層

for (int i = 0; i < 3; ++i) {
    for (int j = 0; j < 3; ++j) {
        if (j == 1) break;  // 只跳出內層 j 迴圈
        printf("(%d,%d) ", i, j);
    }
    printf("\n");
}
/* 輸出:
(0,0)
(1,0)
(2,0)
*/

跳出多層迴圈的三種方案

方案 1:旗標變數 (最通用)

bool found = false;
for (int i = 0; i < 10 && !found; ++i) {
    for (int j = 0; j < 10; ++j) {
        if (condition) { found = true; break; }
    }
}

方案 2:goto (C 語言標準支援,慎用)

for (int i = 0; i < 10; ++i) {
    for (int j = 0; j < 10; ++j) {
        if (condition) goto OUT;
    }
}
OUT:
printf("跳出雙層迴圈\n");

僅用於**極少數**極深巢狀且旗標讓代碼混亂時。

方案 3:封裝成函數直接 return (最推薦)


bool search_matrix(int **mat, int rows, int cols, int target) {
    for (int i = 0; i < rows; ++i)
        for (int j = 0; j < cols; ++j)
            if (mat[i][j] == target) return true;
    return false;
}

break vs continue 對照

關鍵字作用後續流程
break結束整個迴圈執行迴圈後的下一句
continue結束**本次**迭代執行 step (for) 或 直接判斷條件 (while)

switch 中的 break

switch (ch) {
    case 'a': do_a(); break;   // 必須 break,否則貫穿執行 case 'b'
    case 'b': do_b(); break;
    default:  do_default();
}

結語

break 是**單層迴圈/分支的緊急剎車**。善用「函數早返回」替代旗標+break,遇到多層跳出優先重構為函數,實在無法才用旗標或極少數 `goto`。記住:**break 只穿透一層**。

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