
- C 程式設計教程
- C - 首頁
- C 語言基礎
- C - 概述
- C - 特性
- C - 歷史
- C - 環境設定
- C - 程式結構
- C - Hello World
- C - 編譯過程
- C - 註釋
- C - 詞法單元
- C - 關鍵字
- C - 識別符號
- C - 使用者輸入
- C - 基本語法
- C - 資料型別
- C - 變數
- C - 整數提升
- C - 型別轉換
- C - 型別強制轉換
- C - 布林值
- C 語言中的常量和字面量
- C - 常量
- C - 字面量
- C - 轉義序列
- C - 格式說明符
- C 語言中的運算子
- C - 運算子
- C - 算術運算子
- C - 關係運算符
- C - 邏輯運算子
- C - 位運算子
- C - 賦值運算子
- C - 一元運算子
- C - 自增和自減運算子
- C - 三元運算子
- C - sizeof 運算子
- C - 運算子優先順序
- C - 其他運算子
- C 語言中的決策
- C - 決策
- C - if 語句
- C - if...else 語句
- C - 巢狀 if 語句
- C - switch 語句
- C - 巢狀 switch 語句
- C 語言中的迴圈
- C - 迴圈
- C - while 迴圈
- C - for 迴圈
- C - do...while 迴圈
- C - 巢狀迴圈
- C - 無限迴圈
- C - break 語句
- C - continue 語句
- C - goto 語句
- C 語言中的函式
- C - 函式
- C - 主函式
- C - 按值呼叫函式
- C - 按引用呼叫函式
- C - 巢狀函式
- C - 可變引數函式
- C - 使用者定義函式
- C - 回撥函式
- C - 返回語句
- C - 遞迴
- C 語言中的作用域規則
- C - 作用域規則
- C - 靜態變數
- C - 全域性變數
- C 語言中的陣列
- C - 陣列
- C - 陣列的特性
- C - 多維陣列
- C - 將陣列傳遞給函式
- C - 從函式返回陣列
- C - 可變長陣列
- C 語言中的指標
- C - 指標
- C - 指標和陣列
- C - 指標的應用
- C - 指標運算
- C - 指標陣列
- C - 指標到指標
- C - 將指標傳遞給函式
- C - 從函式返回指標
- C - 函式指標
- C - 指向陣列的指標
- C - 指向結構體的指標
- C - 指標鏈
- C - 指標與陣列
- C - 字元指標和函式
- C - 空指標
- C - void 指標
- C - 懸空指標
- C - 解引用指標
- C - 近、遠和巨大指標
- C - 指標陣列的初始化
- C - 指標與多維陣列
- C 語言中的字串
- C - 字串
- C - 字串陣列
- C - 特殊字元
- C 語言中的結構體和聯合體
- C - 結構體
- C - 結構體和函式
- C - 結構體陣列
- C - 自引用結構體
- C - 查詢表
- C - 點 (.) 運算子
- C - 列舉 (或 enum)
- C - 結構體填充和打包
- C - 巢狀結構體
- C - 匿名結構體和聯合體
- C - 聯合體
- C - 位域
- C - Typedef
- C 語言中的檔案處理
- C - 輸入 & 輸出
- C - 檔案 I/O (檔案處理)
- C 預處理器
- C - 預處理器
- C - 編譯指示
- C - 預處理器運算子
- C - 宏
- C - 標頭檔案
- C 語言中的記憶體管理
- C - 記憶體管理
- C - 記憶體地址
- C - 儲存類
- 其他主題
- C - 錯誤處理
- C - 可變引數
- C - 命令執行
- C - 數學函式
- C - static 關鍵字
- C - 隨機數生成
- C - 命令列引數
- C 程式設計資源
- C - 問答
- C - 快速指南
- C - 速查表
- C - 有用資源
- C - 討論
C 語言中的 break 語句
C 語言中的break語句在兩種不同的上下文中使用。在 switch-case 中,break作為每個case塊的最後一個語句放置。break語句也可以用於任何迴圈結構(while、do–while以及for迴圈)的主體中。
在迴圈內部使用時,break會導致迴圈終止。在 switch-case 語句中,break在執行相應的case塊後將控制權從 switch 作用域中移出。
C 語言中 break 語句的流程圖
迴圈中break的流程圖如下所示:

以下流程圖顯示瞭如何在 switch-case 中使用 break:

在這兩種情況下,break都會導致控制權從當前作用域中移出。
在 While 迴圈中使用 Break 語句
break語句永遠不會無條件地使用。它始終出現在if語句的 True 部分。否則,迴圈將在第一次迭代的中間終止。
while(condition1){ . . . . . . if(condition2) break; . . . . . . }
帶 while 迴圈的 break 語句示例
以下程式檢查給定數字是否為素數。素數不能被除自身和 1 以外的任何其他數字整除。
while 迴圈將除數加 1 並嘗試檢查它是否可被整除。如果發現可被整除,則終止while迴圈。
#include <stdio.h> /*break in while loop*/ int main () { int i = 2; int x = 121; printf("x: %d\n", x); while (i < x/2){ if (x % i == 0) break; i++; } if (i >= x/2) printf("%d is prime", x); else printf("%d is not prime", x); return 0; }
輸出
執行此程式碼後,您將獲得以下輸出:
x: 121 121 is not prime
現在,將“x”的值更改為 25 並再次執行程式碼。它將產生以下輸出:
x: 25 25 is not prime
在 For 迴圈中使用 Break 語句
您也可以在for迴圈內使用break語句。通常,for迴圈旨在執行一定數量的迭代。但是,有時如果達到某個條件,可能需要放棄迴圈。
在for迴圈中使用break的方法如下所示:
for (init; condition; increment) { . . . if (condition) break; . . . }
帶 for 迴圈的 break 語句示例
以下程式列印給定字串中母音 (a、e、I 或 u) 檢測到之前的字元。
#include <stdio.h> #include <string.h> int main () { char string[] = "Rhythmic"; int len = strlen(string); int i; for (i = 0; i < len; i++){ if (string[i] == 'a' || string[i] == 'e' || string[i] == 'i' || string[i] == 'o' || string[i] == 'u') break; printf("%c\n", string[i]); } return 0; }
輸出
執行程式碼並檢查其輸出:
R h y t h m
如果break出現在巢狀迴圈結構的內部迴圈中,它會放棄內部迴圈並繼續外部迴圈主體的迭代。對於下一次迭代,它會再次進入內部迴圈,如果發現條件為真,則可能會再次中斷。
帶巢狀 for 迴圈的 break 語句示例
在以下程式中,使用兩個巢狀迴圈來獲取 1 到 30 之間所有素數的列表。當發現一個數字可被整除時,內部迴圈中斷,並將標誌設定為 1。在內部迴圈之後,檢查標誌的值。如果它是“0”,則該數字是素數。
#include <stdio.h> int main(){ int i, num, n, flag; printf("The prime numbers in between the range 1 to 30:\n"); for(num = 2; num <= 30; num++){ flag = 0; for(i = 2; i <= num/2; i++){ if(num % i == 0){ flag++; break; } } if(flag == 0) printf("%d is prime\n",num); } return 0; }
輸出
2 is prime 3 is prime 5 is prime 7 is prime 11 is prime 13 is prime 17 is prime 19 is prime 23 is prime 29 is prime
在無限迴圈中使用 Break 語句
無限迴圈很少有意建立。但是,在某些情況下,您可能會啟動一個無限迴圈並在達到某個條件時從中退出。
帶無限迴圈的 break 語句示例
在以下程式中,使用了無限for迴圈。在每次迭代中,都會生成 1 到 100 之間的隨機數,直到獲得一個可以被 5 整除的數字。
#include <stdio.h> #include <stdlib.h> #include <time.h> int main(){ int i, num; printf ("Program to get the random number from 1 to 100: \n"); srand(time(NULL)); for (; ; ){ num = rand() % 100 + 1; // random number between 1 to 100 printf (" %d\n", num); if (num%5 == 0) break; } }
輸出
執行此程式碼後,您將獲得如下所示的輸出:
Program to get the random number from 1 to 100: 6 56 42 90
在 Switch Case 中使用 Break 語句
要將控制權從switch作用域中轉移出去,每個 case 塊都以break語句結尾。如果不是,程式將貫穿所有 case 塊,這並非預期。
帶 switch 的 break 語句示例
在以下程式碼中,一系列if-else 語句根據“ch”變數(“m”、“a”或“e”分別代表上午、下午或晚上)的值列印三個不同的問候語。
#include <stdio.h> int main(){ /* local variable definition */ char ch = 'm'; printf("Time code: %c\n\n", ch); switch(ch) { case 'm': printf("Good Morning \n"); break; case 'a': printf("Good Afternoon \n"); break; case 'e': printf("Good Evening \n"); break; default: printf("Hello"); } }
輸出
這裡,break語句在檢查第一個 case 後中斷程式執行。
Time code: m Good Morning
現在,註釋掉break語句並再次執行程式碼。您現在將獲得以下輸出:
Time code: m Good Morning Good Afternoon Good Evening Hello