跳转至

do while 循环

基本语法

do {
    // 循环体
} while (条件表达式);

先执行循环体,再判断条件。

条件成立,就再执行一轮;不成立,就结束循环。

int i = 1;
do {
    cout << i << ' ';
    i++;
} while (i <= 3);

输出 1 2 3。

while 与 do while 的区别

while 先判断,再执行,循环体可能一次也不执行。

do while 先执行,再判断,循环体至少执行一次。

int x = 0;
while (x > 0) {
    cout << x; // 不执行
}
int x = 0;
do {
    cout << x; // 执行一次,输出0
} while (x > 0);

数位拆分,求位数

有些操作,至少要做一次,就可以考虑 do while。

比如求一个非负整数的位数,0 也是一位数。

int x;
cin >> x;

int cnt = 0;
do {
    cnt++;
    x /= 10;
} while (x);

cout << cnt;

输入 123,输出 3;输入 0,输出 1。

如果直接用 while (x),输入 0 时,循环一次也不执行,需要另外处理。

常见错误

最后的分号,不能漏。

do {
    // 循环体
} while (条件表达式); // 这里必须有分号

注意与 while 循环区分,分号的位置不同。

条件不成立,也会先执行一次。

如果第一次操作之前就需要检查条件,应该先判断,不能直接照搬 do while。

循环里,也要让条件有机会改变。

前面的例子,漏掉 i++ 或 x /= 10,都可能变成死循环。