仅依赖循环条件,有时无法满足全部控制需求。当需要提前结束整个循环,或跳过当前轮次并进入下一轮时,可使用 break 与 continue。本节通过两个示例说明它们在 C 语言中的用法;Java、Python、JavaScript 等语言也提供同名或语义相近的流程控制语句。
break:立即终止循环
执行到 break 时,会立即终止当前循环,后续迭代不再执行。实际代码中常与 if 联用,在条件满足时跳出循环:
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,直接进入下一轮循环,因此总和不会包含负数。
continue 流程:满足条件时跳过本轮剩余语句,进入下一轮循环
break 与 continue 的区别
| 语句 | 作用 | 典型场景 |
|---|---|---|
break | 终止整个循环 | 遇到非法输入提前结束、找到目标结果后退出 |
continue | 跳过当前轮次,继续下一轮 | 过滤不符合条件的数据项 |
在嵌套循环中,break 与 continue 仅作用于最内层循环。若需跳出外层循环,应优先通过重构逻辑解决;确有必要时可参考 goto(见goto 章节),并注意可读性与维护成本。
小结:break 结束整个循环,continue 仅跳过当前轮次。二者都是循环内的流程控制手段,语义与多数主流语言中的同名关键字一致。