☰
C++ 第 9 课:break 和 continue
2026/10/1 8:40:48 网站建设 项目流程

上一课标准答案:

  1. 输出:
0 1 2 3
  1. 输出:
1 2 3
  1. 一共执行6 次,i依次是:
0 1 2 3 4 5
  1. 选B.while。因为我们不知道机械臂具体要循环多少次,只知道“还没到目标就继续”。

第 9 课:break和continue

这两个都是控制循环流程的。

你可以先这样记:

break 直接结束整个循环 continue 只跳过当前这一轮,继续下一轮

这两个区别非常重要。


1. 先看break

for (int i = 0; i < 10; i++) { if (i == 3) { break; } std::cout << i << std::endl; }

正常情况下,i会从:

0 到 9

但是当:

i == 3

成立时:

break;

直接退出整个for循环。

所以输出:

0 1 2

不会输出3。

因为程序执行到:

break;

就立刻跳出循环了。


2.break的流程

可以理解成:

i = 0 ↓ 输出 0 ↓ i = 1 ↓ 输出 1 ↓ i = 2 ↓ 输出 2 ↓ i = 3 ↓ 满足 if ↓ break ↓ 整个循环结束

3. 机械臂里什么时候会用break

比如你在寻找第一个故障关节:

for (int i = 0; i < 6; i++) { if (i == 3) { std::cout << "Error found" << std::endl; break; } }

可以理解成:

一旦发现故障,就不用继续检查后面的关节了。

这时候break很合理。


4. 再看continue

for (int i = 0; i < 5; i++) { if (i == 2) { continue; } std::cout << i << std::endl; }

这次不是结束整个循环。

当:

i == 2

时:

continue;

表示:

当前这一轮剩下的代码不执行,直接进入下一轮。

所以输出:

0 1 3 4

注意:

2

被跳过了。


5.continue和break的区别

看同一个场景。

break

if (i == 2) { break; }

效果:

0 1 结束

continue

if (i == 2) { continue; }

效果:

0 1 跳过2 3 4 继续

所以:

break 结束整个循环 continue 结束当前这一轮

6. 机械臂数据筛选例子

假设你有 6 个关节,但其中第 3 个数据无效。

我们可以:

for (int i = 0; i < 6; i++) { if (i == 2) { continue; } std::cout << "Process joint " << i << std::endl; }

输出:

Process joint 0 Process joint 1 Process joint 3 Process joint 4 Process joint 5

也就是:

第 3 个关节这一轮跳过,但其他关节继续处理。

这就是continue很典型的用途。


7.while里面也能用

例如:

int count = 0; while (true) { count++; if (count == 5) { break; } }

当:

count = 5

时退出循环。

所以break不只用于for,也能用于:

while

8. 一个机器人停止例子

以后你可能写:

while (true) { bool emergency_stop = false; if (emergency_stop == true) { break; } // 控制机械臂 }

意思是:

程序持续运行,但如果触发急停,就退出循环。

当然真实机器人安全控制会更复杂,但逻辑思想就是这样。


9. 一个容易犯错的地方

看:

for (int i = 0; i < 5; i++) { if (i == 2) { continue; } std::cout << i << std::endl; }

当i == 2时:

continue;

会跳过:

std::cout << i << std::endl;

所以不会输出2。

你可以理解成:

continue ↓ 这一轮剩余代码全部跳过 ↓ 进入下一轮

10.continue在while里要特别小心

例如:

int i = 0; while (i < 5) { if (i == 2) { continue; } i++; }

这个程序有问题。

为什么?

当:

i = 2

时进入:

continue;

然后直接回到:

while (i < 5)

但是:

i++;

被跳过了。

所以i永远还是:

2

于是:

2 < 5

永远成立。

形成死循环。


11. 正确写法之一

可以先让i增加:

int i = 0; while (i < 5) { i++; if (i == 2) { continue; } std::cout << i << std::endl; }

这样就不会卡死。

这说明一个非常重要的事情:

在while中使用continue时,要特别注意“负责改变循环条件的变量”有没有被跳过。


12. 今天最重要的判断

以后看到:

break;

你问:

是不是要彻底离开整个循环?

看到:

continue;

你问:

是不是只想跳过当前这一轮?


小练习

第 1 题

for (int i = 0; i < 5; i++) { if (i == 3) { break; } std::cout << i << std::endl; }

输出什么?

第 2 题

for (int i = 0; i < 5; i++) { if (i == 3) { continue; } std::cout << i << std::endl; }

输出什么?

第 3 题

break和continue最大区别是什么?

第 4 题

下面代码为什么可能死循环?

int i = 0; while (i < 5) { if (i == 2) { continue; } i++; }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询