
一起动脑筋 · 先看一个小故事
糖盒里有 3 颗糖,机器人每次取 1 颗,直到盒子空了。它不必先写三次取糖。
把过程摊开来看
- 检查剩 3,可以取
- 更新剩 2,再检查
- 更新剩 1,再检查
- 剩 0条件为假,结束
while 在每轮开始前检查条件。循环体通常要改变与条件有关的状态,才能接近结束。
这里的状态是剩余糖数,取一次就少 1。
01什么时候适合 while?
有些任务在开始前并不知道要重复多少次。
例如:只要用户还没有输入 0,就继续读取数字。
int x;
std::cin >> x;
while (x != 0) {
std::cout << x << '\n';
std::cin >> x;
}
02while 是怎样工作的?
检查条件→true:执行循环体↺回去再次检查
如果条件一开始就是 false,循环体一次也不会执行。
03while 和 for 有什么不同?
for
常用于计数、遍历等更新规则清晰的循环。
while
常用于“只要某个状态还成立就继续”的循环。
它们都能表达很多相同逻辑,选择哪一个主要看哪种写法更清楚。
04为什么条件一定要发生变化?
int x = 1;
while (x < 10) {
std::cout << x;
}
这里 x 永远不会改变,所以条件一直是 true,循环不会正常结束。
05输入失败时也要小心
如果循环依赖输入,仅检查数值有时还不够,因为输入本身也可能失败。
int x;
while (std::cin >> x) {
std::cout << x << '\n';
}
这里利用输入流状态控制循环,当读取失败或到达输入结束时就退出。
06while 能写计数循环吗?
当然可以:
int i = 1;
while (i <= 3) {
std::cout << i << '\n';
i++;
}
它和前面的简单 for 循环表达的是相同的重复过程。
你已经知道了什么
- while 每轮开始前先检查条件。
- 条件为 true 就继续,false 就结束。
- 条件一开始为 false 时,循环体可能一次也不执行。
- while 特别适合循环次数事先不确定的任务。
- 必须考虑什么变化会让循环最终结束。
下一篇:循环里的变量发生了什么?
轮到你来试一试
取走糖后忘了更新记录里的数量,程序可能怎样?
想好了吗?点开看解释
记录一直显示有糖,条件可能始终成立,形成无限循环。现实动作与程序记录都要对应更新。