break与continue
一、知识点前言
break 和 continue 是 C++ 循环结构中仅有的两个跳转语句,是入门刷题、真题考点、代码逻辑优化的核心知识点。
二者专门用于干预循环默认执行流程,打破从头至尾的固定循环逻辑,实现「提前结束循环」「跳过无效循环」的效果,在枚举、筛选、查找、模拟类题目中高频使用。
重点:仅作用于当前所在的单层循环,嵌套循环中不会影响外层循环。
二、break 语句(终止整个循环)
1. 核心作用
直接彻底终止当前整层循环,跳出循环体,执行循环后续的代码。
无论循环条件是否成立,只要执行到 break,循环直接作废、立刻结束。
2. 执行流程(for循环专属必考)
循环体中遇到 break:
- 立即停止当前循环体剩余代码;
- 不执行表达式3(变量更新);
- 直接跳出整个for循环,执行循环外后续代码。
3. 适用场景
- 找到目标答案,无需继续循环(查找类题型)
- 满足终止阈值,提前结束循环(级数、累加类题型)
- 死循环
for(;;)唯一合法退出方式
4. 基础示范代码
cpp
// 输出1~10,遇到5直接结束循环
for(int i = 1; i <= 10; i++)
{
if(i == 5)
{
break; // 直接终止整个循环
}
cout << i << " ";
}
// 输出结果:1 2 3 4
解析:i=5时触发break,循环直接结束,5及后续数字全部不输出,且不再执行i++更新。
三、continue 语句(跳过单次循环)
1. 核心作用
仅终止当前这一次循环 ,跳过本次循环剩余代码,直接进入下一次循环,不会结束整体循环。
2. 执行流程(for循环最大易错点)
for循环中遇到 continue:
- 立即跳过本次循环体内剩余所有代码;
- 一定会正常执行表达式3(变量更新);
- 回到表达式2进行条件判断,继续下一轮循环。
高频易错坑 :while循环用continue容易死循环(不会自动更新变量),for循环用continue绝对不会死循环,因为表达式3必定执行更新!
3. 适用场景
- 过滤无效数据、跳过不符合条件的值
- 分类统计数据(奇数、偶数、正负值筛选)
- 简化if嵌套,优化代码结构
4. 基础示范代码
cpp
// 输出1~10,跳过5
for(int i = 1; i <= 10; i++)
{
if(i == 5)
{
continue; // 仅跳过本次循环,继续下一次
}
cout << i << " ";
}
// 输出结果:1 2 3 4 6 7 8 9 10
解析:i=5时触发continue,跳过本次输出代码,执行i++变为6,继续后续循环,整体循环不终止。
四、break 与 continue 核心终极对比(必背)
| 语句 | 作用范围 | 循环结果 | for循环变量更新 | 核心用途 |
|---|---|---|---|---|
| break | 当前整层循环 | 直接结束整个循环 | 不执行更新 | 找到结果、提前退出 |
| continue | 当前单次循环 | 循环继续执行 | 正常执行更新 | 过滤数据、跳过无效值 |
五、嵌套循环中的使用规则(高阶考点)
两个语句均只作用于当前所在的内层循环,完全不影响外层循环。
举例:双层for嵌套,内层写break/continue,只会干预内层循环,外层循环依旧正常迭代。
cpp
// 嵌套循环跳转演示
for(int i = 1; i <= 3; i++)
{
for(int j = 1; j <= 3; j++)
{
if(j == 2) break; // 仅终止内层循环
cout << "i=" << i << " j=" << j << endl;
}
}
六、高频易错点汇总
-
- break是结束循环,continue是跳过一次循环,二者不可混用
-
- for循环中continue一定会执行i++,不会死循环;while极易死循环
-
- 嵌套循环无法用break直接跳出多层,仅能跳出当前层
-
- break和continue后面的本行后续代码永远不会执行,后面写代码无意义、会报警告
-
- continue不是终止循环,只是跳过当前轮,整体循环继续运行