do-while 循环
重复执行 语句,直至 表达式 的值变为 false
。检测发生于每次重复之后。
语法
属性(可选) do 语句 while ( 表达式 ) ;
|
|||||||||
属性(C++11) | - | 任何数量的属性 |
表达式 | - | 任何能按语境转换成 bool 的表达式。每次重复之后求值表此表达式,而若它产生 false,则退出循环。
|
语句 | - | 任何语句,常为复合语句,它是循环体 |
解释
始终至少执行一次 语句,即使 表达式 始终产生 false
。若该情况下不应执行,则可用 while 或 for 循环替代。
若循环的执行必须在某点终止,则可以 break 语句作为终止语句。
若循环需要在循环体结尾继续,则可以 continue 语句作为快捷方式。
注意
作为 C++ 向前进展保证的一部分,若无可观察行为(不调用 I/O 函数,访问 volatile 对象,或进行原子或同步操作)的循环不会终止,则其行为未定义。允许编译器移除这种循环。
关键词
示例
运行此代码
#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