break 语句
break 的核心意思是“跳出”或“中断”。

(图片来源网络,侵删)
主要用途
break 语句主要有两个用途:
a) 在 switch 语句中
这是 break 最常见的用途,当 switch 表达式的某个 case 匹配成功后,程序会执行该 case 后的所有代码,直到遇到 break 或 switch 语句块结束。break 用于终止 switch 的执行,防止“case 穿透”(fall-through)。
#include <stdio.h>
int main() {
int day = 3;
switch (day) {
case 1:
printf("星期一\n");
break; // 如果没有 break,会继续执行 case 2
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break; // 遇到 break,switch 语句执行完毕
default:
printf("其他天\n");
}
return 0;
}
// 输出: 星期三
b) 在循环语句中(for, while, do-while)
在循环内部,一旦执行到 break,会立即终止整个循环的执行,程序流程会跳转到循环语句的下一条语句继续执行。
#include <stdio.h>
int main() {
for (int i = 1; i <= 10; i++) {
printf("i = %d\n", i);
// 当 i 等于 5 时,跳出整个 for 循环
if (i == 5) {
break;
}
}
printf("循环已结束,\n");
return 0;
}
/* 输出:
i = 1
i = 2
i = 3
i = 4
i = 5
循环已结束。
*/
break 的特点总结
- 作用范围:
break只能用于switch语句和三种循环语句(for,while,do-while)的内部。 - 行为:立即终止并退出它所在的
switch或循环。 - 跳转目标:跳转到
switch或循环语句块的下一条语句。
continue 语句
continue 的核心意思是“跳过本次”或“继续下一次”。

(图片来源网络,侵删)
主要用途
continue 语句只用于循环语句(for, while, do-while)中。
当循环体内部执行到 continue 时,会发生以下事情:
- 立即终止**本次循环**的剩余代码。
- 直接进入下一次循环的判断条件(对于
for循环,还会先执行for的increment部分)。
重要区别:break 是跳出整个循环,而 continue 是跳过剩下的本次循环代码,继续下一次循环。
示例
a) 在 for 循环中

(图片来源网络,侵删)
#include <stdio.h>
int main() {
for (int i = 1; i <= 10; i++) {
// i 是偶数,就跳过本次循环的剩余部分
if (i % 2 == 0) {
continue; // 跳转到 for 循环的 i++ 部分
}
// 只有当 i 是奇数时,这行代码才会被执行
printf("i = %d (奇数)\n", i);
}
printf("循环已结束,\n");
return 0;
}
/* 输出:
i = 1 (奇数)
i = 3 (奇数)
i = 5 (奇数)
i = 7 (奇数)
i = 9 (奇数)
循环已结束。
*/
b) 在 while 循环中
#include <stdio.h>
int main() {
int i = 0;
while (i < 5) {
i++; // 注意:在 while 循环中,continue 前要确保 i 能递增,否则可能死循环
if (i == 3) {
continue; // 跳过本次循环剩余代码,直接进入 while (i < 5) 的判断
}
printf("i = %d\n", i);
}
printf("循环已结束,\n");
return 0;
}
/* 输出:
i = 1
i = 2
i = 4
i = 5
循环已结束。
*/
continue 的特点总结
- 作用范围:
continue只能用于循环语句(for,while,do-while)的内部,不能用于switch。 - 行为:跳过本次循环的剩余代码,直接进入下一次循环的迭代。
- 跳转目标:对于
for循环,跳转到increment部分;对于while/do-while循环,跳转到循环条件判断部分。
核心区别与对比
| 特性 | break |
continue |
|---|---|---|
| 中文含义 | 跳出、中断 | 跳过、继续 |
| 作用范围 | switch 语句、循环语句 |
仅循环语句 |
| 行为 | 终止并退出整个循环或 switch |
跳过本次循环的剩余代码,继续下一次循环 |
| 对循环的影响 | 循环完全结束 | 循环继续执行,只是当前次被提前终止 |
| 形象比喻 | “叫停比赛”,比赛结束。 | “本轮弃权”,下一轮继续比赛。 |
一个容易混淆的陷阱:break vs continue
让我们看一个例子来加深理解。
#include <stdio.h>
int main() {
printf("--- 使用 break 的例子 ---\n");
for (int i = 1; i <= 5; i++) {
if (i == 3) {
break; // 当 i=3 时,整个循环结束
}
printf("break: i = %d\n", i);
}
printf("\n--- 使用 continue 的例子 ---\n");
for (int i = 1; i <= 5; i++) {
if (i == 3) {
continue; // 当 i=3 时,跳过 printf,但循环继续
}
printf("continue: i = %d\n", i);
}
return 0;
}
输出结果:
--- 使用 break 的例子 ---
break: i = 1
break: i = 2
--- 使用 continue 的例子 ---
continue: i = 1
continue: i = 2
continue: i = 4
continue: i = 5
通过对比输出,可以非常清晰地看到两者的区别。
何时使用?
-
使用
break的情况:- 当你找到一个目标后,不需要再循环了,在一个数组中查找一个特定数字,找到后就可以立即退出循环。
- 当某个条件发生时,程序状态已经无效或错误,需要立即终止循环。
-
使用
continue的情况:- 当你想要跳过某些不符合条件的元素,处理其余元素时,遍历一个列表,只处理奇数或只处理非空字符串。
- 当你遇到一个无效数据或错误输入时,不希望它影响后续数据的处理,于是跳过它。
记住这两个核心要点:
break= Exit (退出):它让你彻底离开一个循环或switch结构。continue= Skip (跳过):它让你只跳过当前循环的剩余部分,然后进行下一次迭代。
理解并正确使用它们,是写出高效、清晰逻辑代码的关键一步。
