仅依赖循环条件,有时无法满足全部控制需求。当需要提前结束整个循环,或跳过当前轮次并进入下一轮时,可使用 break 与 continue。本节通过两个示例说明它们在 C 语言中的用法;Java、Python、JavaScript 等语言也提供同名或语义相近的流程控制语句。

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跳过当前轮次,继续下一轮过滤不符合条件的数据项

在嵌套循环中,break 与 continue 仅作用于最内层循环。若需跳出外层循环,应优先通过重构逻辑解决;确有必要时可参考 goto(见goto 章节),并注意可读性与维护成本。

小结:break 结束整个循环,continue 仅跳过当前轮次。二者都是循环内的流程控制手段,语义与多数主流语言中的同名关键字一致。