【发布时间】:2010-11-07 19:30:09
【问题描述】:
如何在 C++ 中创建重复直到循环?与标准的 While 或 For 循环相反。我需要在每次迭代结束时检查条件,而不是在开始时。
【问题讨论】:
标签: c++ loops for-loop while-loop
如何在 C++ 中创建重复直到循环?与标准的 While 或 For 循环相反。我需要在每次迭代结束时检查条件,而不是在开始时。
【问题讨论】:
标签: c++ loops for-loop while-loop
do
{
// whatever
} while ( !condition );
【讨论】:
null 是 Planet 类型的实例时。
当您想在循环开始时检查条件时,只需在标准 while 循环上否定条件即可:
while(!cond) { ... }
如果最后需要它,请使用 do ... while 循环并否定条件:
do { ... } while(!cond);
【讨论】:
您可以使用宏来模拟重复直到语法。
#define repeat do
#define until(exp) while(!(exp))
【讨论】:
#define 是一个宏,它的作用有点像一个函数。因此,在这种情况下,#define until(exp) 是一个名为 until 的宏,它接受一个参数 exp,并扩展为 while(!(exp))。
例如,如果您希望循环在对组中的所有人进行计数后停止。我们将认为值 X 等于组中的人数,并且计数器将用于对组中的所有人进行计数。要写
while(!condition)
代码将是:
int x = 人;
int 计数器 = 0;
while(x != 计数器)
{
计数器++;
}
返回 0;
【讨论】:
只需使用:
do
{
//enter code here
} while ( !condition );
所以它的作用是将“检查条件”部分移到末尾,因为 while 位于末尾。所以它只在运行代码后检查条件,就像你想要的那样
【讨论】:
Repeat 应该是一个简单的循环 n 次循环...循环的无条件版本。
#define repeat(n) for (int i = 0; i < n; i++)
repeat(10) {
//do stuff
}
您还可以添加一个额外的 barce 以进一步隔离 i 变量
#define repeat(n) { for (int i = 0; i < n; i++)
#define endrepeat }
repeat(10) {
//do stuff
} endrepeat;
[编辑] 有人发布了关于传递值以外的其他内容(例如表达式)的担忧。只需更改为循环向后运行,导致表达式仅计算一次
#define repeat(n) { for (int i = (n); i > 0; --i)
【讨论】:
这个也可以
int repeat;
repeat = 0;
//to repeat once
do {
....
repeat + 1;
} while(repeat < 1);
这当然是假设您只想重复一次,因此您可以更改重复的值,而不是从while(); 条件的可变数量增加的数量。此代码适用于 C++ 17,但我不确定是否适用于其他版本。
【讨论】: