C语言break跳出的是循环还是switch?

99ANYc3cd6
预计阅读时长 15 分钟
位置: 首页 C语言 正文

在 C 语言中,break 语句主要有两个作用,具体它跳出的是什么,取决于它所处的上下文:

c语言 break跳出的是
(图片来源网络,侵删)
  1. 跳出 switch 语句
  2. 跳出 forwhiledo-while 循环

下面我们详细解释这两种情况。


跳出 switch 语句

这是 break 最经典和最常见的用途,在 switch 语句中,case 标签只是一个入口点,一旦程序执行到一个匹配的 case,它会顺序执行该 case 以及之后的所有 case 的代码,直到遇到 break 语句或 switch 语句的结束大括号 。

如果没有 break,就会发生 “case 穿透” (case fall-through) 的情况。

示例:

c语言 break跳出的是
(图片来源网络,侵删)
#include <stdio.h>
int main() {
    int day = 3;
    switch (day) {
        case 1:
            printf("星期一\n");
            break; // 跳出 switch 语句
        case 2:
            printf("星期二\n");
            break; // 跳出 switch 语句
        case 3:
            printf("星期三\n");
            break; // 跳出 switch 语句
        case 4:
            printf("星期四\n");
            break; // 跳出 switch 语句
        case 5:
            printf("星期五\n");
            break; // 跳出 switch 语句
        case 6:
            printf("星期六\n");
            break; // 跳出 switch 语句
        case 7:
            printf("星期日\n");
            break; // 跳出 switch 语句
        default:
            printf("无效的日期\n");
            break; // 虽然是最后一句,但加上是好习惯
    }
    return 0;
}

在这个例子中,当 day 的值为 3 时,程序会执行 case 3: 的代码,打印 "星期三",然后遇到 break;break 会立即终止整个 switch 语句的执行,程序会跳转到 switch 语句后面的代码,也就是 return 0;


跳出 forwhiledo-while 循环

break 也可以用于循环中,它的作用是立即终止 当前所在的循环,程序流程会跳转到循环语句后面的第一条语句继续执行。

示例:

#include <stdio.h>
int main() {
    int i;
    // 使用 for 循环
    printf("for 循环示例:\n");
    for (i = 1; i <= 10; i++) {
        if (i == 5) {
            break; // 当 i 等于 5 时,跳出 for 循环
        }
        printf("%d ", i);
    }
    // 循环在这里终止,不会打印 5, 6, 7, 8, 9, 10
    printf("\n循环已跳出,i 的值是: %d\n\n", i); // 输出 i 的值
    // 使用 while 循环
    printf("while 循环示例:\n");
    int j = 1;
    while (j <= 10) {
        if (j == 7) {
            break; // 当 j 等于 7 时,跳出 while 循环
        }
        printf("%d ", j);
        j++;
    }
    // 循环在这里终止,不会打印 7, 8, 9, 10
    printf("\n循环已跳出,j 的值是: %d\n", j);
    return 0;
}

输出结果:

c语言 break跳出的是
(图片来源网络,侵删)
for 循环示例:
1 2 3 4 
循环已跳出,i 的值是: 5
while 循环示例:
1 2 3 4 5 6 
循环已跳出,j 的值是: 7

注意: break 只能跳出它所在的 一层 循环,如果你在嵌套循环中使用 break,它只会跳出最内层的那个循环。

嵌套循环示例:

#include <stdio.h>
int main() {
    for (int i = 1; i <= 3; i++) {
        for (int j = 1; j <= 3; j++) {
            if (j == 2) {
                break; // 这个 break 只会跳出内层的 for (j) 循环
            }
            printf("i=%d, j=%d\n", i, j);
        }
    }
    return 0;
}

输出结果:

i=1, j=1
i=2, j=1
i=3, j=1

可以看到,当 j 等于 2 时,break 跳出了内层循环,但外层循环 i 继续正常执行。


breakreturn 的区别

初学者容易混淆 breakreturn

  • break: 只能跳出 循环switch 语句,它不会结束整个函数的执行。
  • return: 用于从 函数中返回,并立即结束 整个函数 的执行。

示例对比:

#include <stdio.h>
void function_with_break() {
    printf("function_with_break 开始\n");
    for (int i = 0; i < 5; i++) {
        if (i == 2) {
            break; // 只跳出 for 循环
        }
        printf("i = %d\n", i);
    }
    printf("function_with_break 结束 (因为循环结束了)\n"); // 这行代码会被执行
}
void function_with_return() {
    printf("function_with_return 开始\n");
    for (int i = 0; i < 5; i++) {
        if (i == 2) {
            return; // 直接结束整个 function_with_return 函数
        }
        printf("i = %d\n", i);
    }
    printf("function_with_return 结束 (这行代码永远不会被执行)\n");
}
int main() {
    function_with_break();
    printf("-----------------\n");
    function_with_return();
    printf("main 函数继续执行\n"); // 这行代码会被执行
    return 0;
}

输出结果:

function_with_break 开始
i = 0
i = 1
function_with_break 结束 (因为循环结束了)
-----------------
function_with_return 开始
i = 0
i = 1
main 函数继续执行
上下文 break 的作用
switch 语句 立即终止 switch 语句的执行,跳转到 switch 后的代码。
for/while/do-while 循环 立即终止 当前 循环的执行,跳转到循环后的代码。
嵌套循环 只跳出 最内层 的那个循环。
函数 break 不能 跳出函数,return 才可以。
-- 展开阅读全文 --
头像
dede小说模板带手机版如何适配手机端?
« 上一篇 前天
dede淘宝客模板如何搭建与优化?
下一篇 » 前天

相关文章

取消
微信二维码
支付宝二维码

目录[+]