C 語言中的 break 語句



C 語言中的break語句在兩種不同的上下文中使用。在 switch-case 中,break作為每個case塊的最後一個語句放置。break語句也可以用於任何迴圈結構whiledo–while以及for迴圈)的主體中。

在迴圈內部使用時,break會導致迴圈終止。在 switch-case 語句中,break在執行相應的case塊後將控制權從 switch 作用域中移出。

C 語言中 break 語句的流程圖

迴圈中break的流程圖如下所示:

Break Statement in C

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

Break Statement Flowchart in C

在這兩種情況下,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
c_loops.htm
廣告