如何在 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++ 代码。仅当null
是 Planet
类型的实例时。【参考方案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 的文件夹(目录)[重复]