
一起动脑筋 · 先看一个小故事
机器人逐个检查书包:发现目标就结束检查;遇到空格则跳过,继续看后面。
把过程摊开来看
- 遇空格continue,跳过本轮
- 遇普通物品正常检查
- 遇目标break,离开循环
continue 跳过本轮剩余动作;break 结束它所在的最近一层循环。
一个是“这次跳过”,一个是“这轮搜索到此结束”。可以把检查卡片摆在桌上模拟。
01为什么需要提前改变循环流程?
有时循环不需要一直按原计划执行到最后。
例如找到目标后可以提前结束,遇到不需要处理的数据可以跳过当前这一轮。
02break:立即结束循环
for (int i = 1; i <= 10; i++) {
if (i == 5) {
break;
}
std::cout << i << ' ';
}
输出:
1 2 3 4
当 i == 5 时,break 直接结束这个循环。
03continue:跳过当前这一轮
for (int i = 1; i <= 5; i++) {
if (i == 3) {
continue;
}
std::cout << i << ' ';
}
输出:
1 2 4 5
continue 没有结束整个循环,只是跳过了当前轮剩余代码。
04continue 以后 for 去哪里?
在 for 循环中,执行 continue 后,会先进入 for 的更新部分,然后再次检查条件。
continue→执行 i++→再次判断条件
这是很多初学者容易忽略的一点。
05continue 以后 while 去哪里?
在 while 中,continue 会直接回到条件判断。
06嵌套循环里的 break 会跳出几层?
for (...) {
for (...) {
if (found) {
break;
}
}
}
这里的 break 只结束最内层所在的那个循环,不会自动把外层循环一起结束。
07什么时候不该滥用?
适量使用 break 和 continue 可以让代码更清楚,但如果到处跳转,控制流会变得难以追踪。
写完后要问:别人能不能一眼看懂“它跳到哪里”?
你已经知道了什么
break立即结束当前最内层循环。continue只跳过当前轮剩余代码。- for 中 continue 后还会执行更新部分。
- while 中 continue 会回到条件判断。
- 嵌套循环中的 break 不会自动跳出所有层。
下一篇:怎样读懂一段程序的执行过程?
轮到你来试一试
只想略过坏苹果,仍检查后面的苹果,应选哪个?
想好了吗?点开看解释
continue。break 会让这层循环直接结束,后面的苹果不再检查。