第3.8章: do while
do while 语句
do while 循环与 while 循环相似,区别在于
循环体在检查条件之前至少执行一次。
do {
body
} while (cond);
条件在循环体执行之后检查。
基础示例
这个循环打印 0 到 4。
::std::uint_least32_t i{};
do {
println("i=", i);
++i;
} while (i != 5);
与 while 的区别
如果开始时条件为假,while 循环可能一次都不执行。
::std::uint_least32_t i{5};
while (i != 5) { // false immediately
println("never printed");
}
但 do while 总会执行一次循环体:
::std::uint_least32_t i{5};
do {
println("printed once");
} while (i != 5);
求和示例
这个例子对 [0, 100) 求和。
::std::uint_least32_t i{};
::std::uint_least32_t sum{};
do {
sum = sum + i;
++i;
} while (i != 100);
println("sum of [0,100) = ", sum);
输入校验示例
do while 的一个经典用法是反复执行,直到收到合法输入。
::std::int_least32_t x{};
do {
print("Enter a number between 1 and 5: ");
scan(x);
} while (x < 1 || x > 5);
println("You entered: ", x);
提示语总会至少出现一次。
空循环体的 do while
空循环体是允许的,尽管很少需要。
do {
;
} while (false);
伪图:do while
┌───────────────┐
│ body │ (runs once)
└───────┬───────┘
│
▼
┌───────────────┐
│ cond │─── false ───▶ loop ends
└───────┬───────┘
│ true
▼
└─────────────── back to body
要点
- do while 先执行循环体:条件在其后检查。
- 至少执行一次:这一点与
while不同。 - 适用于输入校验:提示语必须至少出现一次。
- 花括号规则相同:始终使用
{ }以保持清晰。 - 条件以分号结尾:这是必需的语法。