do-while 循环

< 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

参阅