← 目录 / 第五章 · 循环结构 / 5.2 do-while 循环

5.2 do-while 循环

do-while 循环与 while 恰好相反:先执行一次循环体,再判断条件,因此循环体至少会执行一次

do-while 循环

do-while 循环与 while 恰好相反:先执行一次循环体,再判断条件,因此循环体至少会执行一次,哪怕条件一开始就是假的。

5.2.1 do-while 循环的基本结构

5.2.2 do-while 与 while 的选择

这两种循环唯一的区别,就是"第一次要不要先判断条件"。这个细节决定了它们各自的适用场景:

🔁 while — 可能一次都不执行
适合"不确定要不要执行"的场景,比如"如果列表不为空,就处理列表"——列表本来就为空时,一次都不应该执行。
🔂 do-while — 保证至少执行一次
适合"无论如何都要先做一次,再看要不要重复"的场景,最典型的是输入验证——总要先让用户输入一次,才能判断这次输入合不合法。

一个经典的 do-while 应用场景是"重复要求用户输入,直到输入合法为止":

C++ · 输入验证(do-while 的典型场景)
1int age;
2do
3{
4 cout << "请输入年龄(0~150):";
5 cin >> age; // 不管输入是否合法,先读一次
6} while (age < 0 || age > 150); // 不合法就重新循环
7cout << "年龄输入成功:" << age;
💡
换个角度想:如果这段逻辑用 while 写,得先在循环外单独写一次"提示输入"的代码(保证条件判断时变量已经有值),循环体内再重复一遍相同的代码——同样的提示语句要写两遍。do-while 恰好省掉了这次重复。

5.2.3 常见陷阱与易错点

把本节内容汇总成几条最容易踩坑的规则:

1
忘记结尾的分号:do { ... } while (条件); 结尾必须有分号,这是 do-while 独有的语法要求(普通 while 循环结尾不需要分号),漏写会导致编译错误。
2
没意识到"至少执行一次"可能不符合需求:如果循环体在某些情况下根本不应该执行(比如列表本来就是空的),却用了 do-while,会导致代码在这些边界情况下多跑一次,产生不该有的副作用。使用前先确认"至少一次"是不是真的符合业务逻辑。
3
滥用 do-while 当普通 while 用:如果并不需要"至少执行一次"这个特性,滥用 do-while 只会让代码在需要"先判断再执行"的直觉上显得别扭。没有特殊需求时,while 仍然是更常见、更符合直觉的默认选择。