详解C语言中的 break

2018-12-31

break 语句将终止执行其所在位置最接近的外围 do、for、switch 或 while 语句 。 控制权将传递给已终止语句后面的语句。

break;

在此语句之后,控件将在封闭循环或开关之后立即转移到语句或声明。

break语句不能用于打破多个嵌套循环。

switch…case

#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为例)

#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!
#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循环。

再看一个例子:

#include <stdio.h>
int main()
    if (3 > 2)
        break;
        printf("Hello,World!\n");
    return 0;

编译报错:error C2043: illegal break

gcc编译器下给我们提供了更多信息:

test.c: In function 'main':
test.c:7:4: error: break statement not within loop or switch
    break;
    ^~~~~