C break 基本使用
在 C 语言中,我们可以使用 break 语句来退出 “本层” 循环(每一层可以包含多次循环),也就是直接退出整一个循环。break 语句只能用于以下 2 个地方,而不能用于其他地方:
- 用于循环语句:包括 while 循环、do...while 循环、for 循环。
- 用于 switch 语句。
示例 1:在循环语句中使用 break
#include <stdio.h>
int main(void)
{
while (1)
{
printf("绿叶网");
break;
}
return 0;
}运行结果如下。
绿叶网分析:
这里的 while 本身是一个死循环,本来应该会不断重复执行 printf("绿叶网")。但是由于我们加上了 break。执行完了一次 printf() 之后,遇到 break 就会直接退出 while 循环了。
示例 2:在 switch 语句中使用 break
#include <stdio.h>
int main(void)
{
int season = 2;
switch (season)
{
case 1:
printf("春");
break;
case 2:
printf("夏");
break;
case 3:
printf("秋");
break;
case 4:
printf("冬");
break;
default:
printf("季节不正确");
break;
}
return 0;
}运行结果如下。
夏分析:
在 switch 语句 中,C 语言会从第 1 个 case 开始判断,直到找到满足条件的 case 就会退出,然后后面的 case 就不会执行了。
深入了解 C break 语句
在 C 语言中,对于循环中的 break 语句,前面一般有一个 if 判断条件,然后当满足某个条件之后,就会退出循环,请看下面例子。
示例 3:单层循环中使用 break
#include <stdio.h>
int main(void)
{
int n = 5;
for (int i = 1; i <= 10; i++)
{
if (i == n)
{
break;
}
printf("%d\n", i);
}
return 0;
}运行结果如下。
1
2
3
4分析:
由于 i <= 10,本来循环应该执行 10 次才对。但是当执行第 5 次循环时,i 的值为 5,此时判断条件 i == n 返回真,然后就会执行 break 语句,此时就会直接退出整个循环了,并且也不会执行当次循环后面的 printf("%d\n", i);。
需要注意的是,如果有多层循环(即嵌套循环),那么 break 语句只会退出本层循环,而不是退出所有层的循环,请看下面的示例。
示例 4:多层循环中使用 break
#include <stdio.h>
int main(void)
{
int n = 2;
for (int i = 1; i <= 3; i++)
{
for (int j = 1; j <= 3; j++)
{
if (i == n)
{
break;
}
printf("%d\n", i);
}
}
return 0;
}运行结果如下。
1
1
1
3
3
3分析:
n 的值为 2,i 和 j 的取值范围都是 1 ~ 3,具体分析如下。
- 当 i = 1 时,由于 j 循环了 3 次,并且 i == n 返回 False,并不会执行 break 语句,此时输出为:1、1、1。
- 当 i = 2 时,由于 i == n 返回 True,然后会执行 break 语句,直接退出内层的 for 循环(关于 j 的循环),没有任何输出。
- 当 i = 3 时,由于 j 循环了 3 次,并且 i == n 返回 False,并不会执行 break 语句,此时输出为:3、3、3。
提示: 在 C 语言中,break 和 continue 这两种语句也叫 “中断语句”,专门用来控制循环执行时的中断。
C break 注意事项
在使用 break 语句时,小伙伴们需要特别注意以下 2 点。
- break 语句只能用于循环语句和 switch 语句,而不能用于其他语句(如 if 语句或函数中)。
- 如果嵌套了多层循环,那么 break 语句只会退出最内层循环。
可能有些小伙伴会问:“在示例 3 中,break 不就是放在 if 的大括号里吗?” 实际上,break 语句本身不能直接用于跳出普通的 if 代码块(除非该 if 位于循环或 switch 内部)。它服务的对象始终是包裹它的最近一层 “循环语句” 或 “switch 语句”。
