C 语言中的 break 语句
C 语言中的 break 语句在两种不同的上下文中使用。在 switch-case 语句中,break 语句位于每个 case 块的最后一个语句中。 break 语句也可以在任何循环结构(while、dowhile 以及 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> /*while 循环中的 break*/ int main () { int i = 2; int x = 121; printf("x: %d ", 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 ", string[i]); } return 0; }
输出
运行代码并检查其输出 −
R h y t h m
如果嵌套循环结构的内循环中出现 break,则放弃内循环并继续执行外循环体的迭代。下一次迭代时,将再次进入内循环,如果条件成立,则可能再次中断内循环。
嵌套 for 循环的 break 语句示例
以下程序使用了两个嵌套循环来获取 1 到 30 之间所有素数的列表。当发现某个数可被整除时,内循环跳出,并将 flag 设置为 1。内循环结束后,检查 flag 的值。如果为"0",则该数为素数。
#include <stdio.h> int main(){ int i, num, n, flag; printf("The prime numbers in between the range 1 to 30: "); 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 ",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: "); srand(time(NULL)); for (; ; ){ num = rand() % 100 + 1; // 1 到 100 之间的随机数 printf (" %d ", 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 语句结尾。如果没有 break 语句,程序将执行所有 case 块,而这并不是我们想要的。
带 switch 的 break 语句示例
在下面的代码中,一系列 if-else 语句 根据"ch"变量的值("m"、"a"或"e"分别代表上午、下午或晚上)打印三条不同的问候消息。
#include <stdio.h> int main(){ /* 局部变量定义 */ char ch = 'm'; printf("Time code: %c ", ch); switch(ch) { case 'm': printf("Good Morning "); break; case 'a': printf("Good Afternoon "); break; case 'e': printf("Good Evening "); break; default: printf("Hello"); } }
输出
此处,break 语句在检查第一个情况后中断程序执行。
Time code: m Good Morning
现在,注释掉 break 语句并再次运行代码。您将获得以下输出 -
Time code: m Good Morning Good Afternoon Good Evening Hello