重复执行 语句,直至 表达式 的值变为 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
当前内容版权归 cppreference 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 cppreference .