相当于使用for循环而不是do-while-loop

时间:2013-12-22 23:51:49

标签: c for-loop do-while

我想知道而不是使用do-while循环,c中等效的for-loop或任何其他循环组合是什么?

3 个答案:

答案 0 :(得分:9)

任何类型的循环都可以通过无限“永远”循环和条件break语句的组合来构造。

例如,转换

do {
    <action>
} while (<condition>);

for循环,你可以这样做:

for (;;) {
    <action>
    if (!<condition>) break;
}

您可以使用相同的技巧将do / while循环转换为while循环,如下所示:

while (true) {
    <action>
    if (!<condition>) break;
}

此外,根本不需要循环:上面的任何一个都可以使用顶部的标签和底部的goto建模;这是在汇编语言中执行循环的常用方法。首先将三个循环结构引入语言的唯一原因是使语言更具表现力:do / while循环比上面显示的任何替代方案更好地进行作者的想法。

答案 1 :(得分:2)

没有其他循环执行循环内容至少一次,就像do-while一样。当然,您可以使用标志和while循环来模拟do-while:

do {
    A;
} while (B)

变为

int flag=1;
while (flag || B) {
    flag=0;
    A;
}

但这不是一个替代品,它只是模糊了你原来的意图。

答案 2 :(得分:2)

以下三个循环都是等效的:

#define FALSE (0)
#define TRUE  (!(FALSE))

do
{
    status = getStatus();
}
while(status == TRUE);

status = TRUE;
while(status == TRUE)
{
    status = getStatus();
}

for(status = TRUE; status == TRUE; status = getStatus())
{
}