C 等效使用for循环代替do while循环

C 等效使用for循环代替do while循环,c,for-loop,do-while,C,For Loop,Do While,我想知道,在c语言中,除了使用do while循环外,循环或任何其他循环组合的等价物是什么?没有其他循环像do while那样至少执行一次循环内容。当然,您可以使用标志和while循环模拟do while: do { A; } while (B) 变成 int flag=1; while (flag || B) { flag=0; A; } 但这并不是一个真正的替代方案,它只是模糊了你的初衷。任何类型的循环都可以由无限“永久”循环和有条件的break语句组合而成 例如

我想知道,在c语言中,除了使用do while循环外,循环或任何其他循环组合的等价物是什么?

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

do {
    A;
} while (B)
变成

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

但这并不是一个真正的替代方案,它只是模糊了你的初衷。

任何类型的循环都可以由无限“永久”循环和有条件的
break
语句组合而成

例如,转换

do {
    <action>
} while (<condition>);
您可以使用相同的技巧将
do
/
while
循环转换为
while
循环,如下所示:

while (true) {
    <action>
    if (!<condition>) break;
}
while(true){
如果(!)中断;
}

此外,根本不需要循环:上面任何一个都可以建模,顶部有一个标签,底部有一个
goto
;这是在汇编语言中执行循环的常见方法。最初将三个循环结构引入语言的唯一原因是为了使语言更具表现力:
do
/
,而
循环比上面所示的任何一个备选方案更好地执行作者的想法。

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

#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())
{
}

你怎么认为?do-while(vs-stright
while
)的主要问题是循环总是至少迭代一次;与do部分相同吗?@deathshot是的,“中断”条件是否定的“继续”条件。@OliCharlesworth谢谢你。哦,我真的是在暗示,按照习惯用法,它将被写为
status
,而不是
status==true
。只是为了新程序员的利益而尝试显式表达。使用
while(status)
显然看起来更好。这不应该是
status=TRUE(而不是
true
)也适用于while?Rich之前的作业。非常感谢。
#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())
{
}