只依靠循环条件,很多时候没法等到条件自动结束。有时需要直接跳出整个循环,或是放弃本轮、直接开启下一轮迭代,这正是 break 和 continue 的作用。我们借助两段示例,把两者的区别说清楚。

break:立刻结束循环

break 遇到它就立即结束整个循环,后面的循环体不再执行。它几乎总是和 if 配合使用:

break;

示例:输入负数就提前结束

C 语言 break 终止循环示例运行
// 程序计算最多 10 个数字的总和,输入负数则循环终止
#include <stdio.h>

int main() {
    int i;
    double number, sum = 0.0;

    for (i = 1; i <= 10; ++i) {
        printf("输入 n%d: ", i);
        scanf("%lf", &number);

        // 如果用户输入的是负数,循环结束
        if (number < 0.0) {
            break;
        }

        sum += number;  // 等同 sum = sum + number;
    }

    printf("总和 = %.2lf", sum);
    return 0;
}

输出:

输入 n1: 2.4
输入 n2: 4.5
输入 n3: 3.4
输入 n4: -3
总和 = 10.30

程序最多加 10 个数字,但用户输入负数时 break 立刻中断循环。另外 break 也是 switch 语句里跳出分支的关键(见条件分支章节)。

continue:跳过这一次

continue 跳过本次循环的剩余语句,直接进入下一轮迭代:

continue;

示例:负数不参与求和

// 程序计算最多 10 个数字的总和,从计算中跳过负数
#include <stdio.h>

int main() {
    int i;
    double number, sum = 0.0;

    for (i = 1; i <= 10; ++i) {
        printf("输入 n%d: ", i);
        scanf("%lf", &number);

        if (number < 0.0) {
            continue;   // 负数直接跳过,不加入 sum
        }

        sum += number;  // 等同 sum = sum + number;
    }

    printf("总和 = %.2lf", sum);
    return 0;
}

输出:

输入 n1: 1.2
输入 n2: 3.4
输入 n3: 6.7
输入 n4: 4.5
输入 n5: -3.8
输入 n6: -48.8
输入 n7: 34.9
输入 n8: -4.6
输入 n9: -1000
输入 n10: 18
总和 = 68.70

负数输入时 continue 让程序跳过 sum += number,直接进入下一轮循环,所以总和不含负数。

进入循环满足\n条件?continue循环体余下部分下一轮/结束

continue 流程:遇到符合条件的数据跳过本轮,直接进入下一轮

break 和 continue 的区别

语句作用典型场景
break直接结束整个循环输入非法值终止、找到结果提前退出
continue跳过本次循环,继续下一轮过滤掉不合条件的数据

两者在嵌套循环里只作用于最内层那层循环。想跳出多层还是靠 goto(见goto 章)。

break 直接结束整个循环,continue 只跳过当前这一轮,一个终止、一个跳过,都是循环里的中断开关。