我想知道而不是使用do-while循环,c中等效的for-loop或任何其他循环组合是什么?
答案 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())
{
}