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
广告