如何在 C++ 中创建重复直到循环?

Posted

技术标签:

【中文标题】如何在 C++ 中创建重复直到循环?【英文标题】:How do you Make A Repeat-Until Loop in C++? 【发布时间】:2010-11-07 19:30:09 【问题描述】:

与标准的 While 或 For 循环相反。我需要在每次迭代结束时检查条件,而不是在开始时。

【问题讨论】:

【参考方案1】:
do

  //  whatever
 while ( !condition );

【讨论】:

呃...这很可悲。埃米尔比我早点提交......“接受”应该给他...... 你的rep少了,这是一个非常简单的问题,所以我很乐意给你。 :) 正如 jalf 所说:如果你想要一个 do until 循环而不是 do while 循环,你将不得不否定条件。 非常感谢你们的帮助,你们!所以是最好的! 答案中的代码看起来不像 C++ 代码。仅当 nullPlanet 类型的实例时。【参考方案2】:

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

while(!cond)  ... 

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

do  ...  while(!cond);

【讨论】:

【参考方案3】:

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

#define repeat do
#define until(exp) while(!(exp))

【讨论】:

这正是我想要的。不确定“exp”是如何工作的。它是通用通配符吗?谢谢! @Ace.C 这是一个参数名称。第二个#define 是一个宏,它的作用有点像一个函数。因此,在这种情况下,#define until(exp) 是一个名为 until 的宏,它接受一个参数 exp,并扩展为 while(!(exp)) 谢谢@Conor.O,有没有关于这个主题的文章或其他帖子可以链接到我?我很难找到关于如何制作这些宏的好资源 请不要使用预处理器来定义您自己的语言 - 除非您真的希望每个必须维护您的代码的同事都仇恨。【参考方案4】:

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

while(!condition)

代码将是:

int x = 人;

int 计数器 = 0;

while(x != 计数器)

计数器++;

返回 0;

【讨论】:

【参考方案5】:

只需使用:

do

  //enter code here
 while ( !condition );

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

【讨论】:

【参考方案6】:

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)

【讨论】:

宏几乎总是一个坏主意。在这里,想象一下如果向宏传递一个复杂的表达式会发生什么。 只需更改循环并完成 for (int i = n; i >0 ; i--)【参考方案7】:

这个也可以

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

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

【讨论】:

看来你的答案很接近接受的答案,所以这就是发布它的意义所在?

以上是关于如何在 C++ 中创建重复直到循环?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中创建 OpenOffice 文档 [重复]

如何在 c++ 中创建一个适用于 Windows 和 linux 的文件夹(目录)[重复]

如何在 C++ 中创建一个类的多个实例

如何在C ++中创建循环内的结构成员

如何在C中创建连续循环,其中循环的每次迭代在其内部循环的每次迭代中发生一次

在 C++ 中创建一个大数组 [重复]