28

如何在 C++ 中创建重复直到循环?与标准的 While 或 For 循环相反。我需要在每次迭代结束时检查条件,而不是在开始时。

4

7 回答 7

49
do
{
  //  whatever
} while ( !condition );
于 2009-07-02T23:38:56.687 回答
9

当您想在循环开始时检查条件时,只需在标准while循环上否定条件:

while(!cond) { ... }

如果最后需要它,请使用do...while循环并否定条件:

do { ... } while(!cond);
于 2009-07-02T23:54:39.590 回答
8

您可以使用宏来模拟重复直到语法。

#define repeat do
#define until(exp) while(!(exp))
于 2012-08-29T13:24:10.077 回答
2

例如,如果您想让一个循环在计算完一个组中的所有人后停止。我们将认为值 X 等于组中的人数,并且计数器将用于对组中的所有人进行计数。写

而(!条件)

代码将是:

诠释 x = 人;

整数计数器 = 0;

而(x!=计数器)

{

计数器++;

}

返回0;

于 2014-10-13T17:06:16.587 回答
2

只需使用:

do
{
  //enter code here
} while ( !condition );

所以它的作用是,它将你的“检查条件”部分移到最后,因为while它在最后。所以它只在运行代码后检查条件,就像你想要的那样

于 2017-03-07T02:22:53.380 回答
1

重复应该是一个简单的循环 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)
于 2018-02-25T14:50:27.437 回答
1

这也可以工作

    int repeat;
    repeat = 0;
    //to repeat once
    do  {
       ....
       repeat + 1;
    } while(repeat < 1);

这当然是假设您只想重复一次,因此您可以更改重复的值,而不是从while();条件的可变数量中增加的数量。此代码适用于 C++ 17,但我不确定是否适用于其他版本。

于 2021-02-28T19:11:48.940 回答