定义
break 语句将终止执行其所在位置最接近的外围 do、for、switch 或 while 语句。 控制权将传递给已终止语句后面的语句。
语法
break;
说明
在此语句之后,控件将在封闭循环或开关之后立即转移到语句或声明。
break语句不能用于打破多个嵌套循环。
例子
switch...case
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#include <stdio.h>
int main(void)
{
int i = 2;
switch (i)
{
case 1:
printf("1");
case 2:
printf("2"); // i==2, 所以从此行开始执行
case 3:
printf("3");
case 4:
case 5:
printf("45");
break; // 从此行跳出switch
case 6:
printf("6");
}
printf("\n");
return 0;
}
|
执行结果:2345
循环(以for为例)
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#include <stdio.h>
int main(void)
{
int i, j;
for (i = 0; i < 3; ++i)
{
for (j = 0; j < 4; ++j)
break; // break 只能终止离它最近的循环
printf("Hello World!\n"); //输出三次
}
return 0;
}
|
执行结果:
Hello World!
Hello World!
Hello World!
if语句
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#include <stdio.h>
int main()
{
int i;
for (i = 0; i < 3; ++i)
{
if (3 > 2)
{
break;
}
printf("Hello,World!\n");
}
return 0;
}
|
执行结果:无输出
根据定义可知,break只会打破do、for、switch 或 while 语句,不会打破if语句,所以这个例子中的break打破的是外层的for循环。
再看一个例子:
1
2
3
4
5
6
7
8
9
10
11
|
#include <stdio.h>
int main()
{
if (3 > 2)
{
break;
printf("Hello,World!\n");
}
return 0;
}
|
编译报错:error C2043: illegal break
gcc编译器下给我们提供了更多信息:
1
2
3
4
|
test.c: In function 'main':
test.c:7:4: error: break statement not within loop or switch
break;
^~~~~
|
即“不在循环或switch的break语句”,由此可知,break不能单独的存在于if语句中,这是一个很不符合我们的思考方式的一个误区。
参考资料
break 语句 (C) |
Microsoft Docs
C / break statement — DevDocs
break statement - cppreference.com