do-while 循环

来自cppreference.com
< cpp‎ | language

重复执行 语句,直到 表达式 的值变成 false。每次重复之后进行检测。

语法

属性(可选) do 语句 while ( 表达式 ) ;
属性 - (C++11 起) 任意数量的属性
表达式 - 按语境转换成 bool 的任意表达式。每次重复之后求值表此表达式,且在它产生 false 时退出循环。
语句 - 任意语句,通常是复合语句,它是循环体

解释

始终至少执行一次 语句,即使 表达式 始终产生 false。如果希望这种情况下不应执行,那么可以用 whilefor 循环替代。

如果循环的执行必须在某点终止,那么可以使用 break 语句作为终止语句。

如果循环需要在循环体结尾继续,那么可以使用 continue 语句作为快捷方式。

注意

作为 C++ 向前进展保证的一部分,如果没有可观察行为(不调用 I/O 函数,访问 volatile 对象,或进行原子或同步操作)的循环不会终止,那么它的行为未定义。编译器可以移除这种循环。

关键词

do, while

示例

#include <iostream>
#include <algorithm>
#include <string>
 
int main()
{
    int j = 2;
    do { // 循环体是复合语句
        j += 2;
        std::cout << j << " ";
    } while (j < 9);
    std::cout << '\n';
    // 使用 do-while 循环的常见情形
    std::string s = "aba";
    std::sort(s.begin(), s.end());
    do std::cout << s << '\n'; // 循环体是表达式语句
    while(std::next_permutation(s.begin(), s.end()));
}

输出:

4 6 8 10
aab
aba
baa

参阅