在 C 程序的示例中,我多次遇到这种循环。这些循环到底有什么作用?
do {
while (...) // Check some condition if it is true.
{
calculation 1
}
// Some new condition is checked.
} while(true);
while(true);
它用于无限循环有什么需要?有人可以解释一下上述循环的真正作用。我是 C 编程新手
当人们想要永远循环并且循环的中断条件未知时使用这些循环。在循环内设置某些条件以及要退出循环的break或return语句。例如:
while(true){
//run this code
if(condition satisfies)
break; //return;
}
这些循环就像任何其他带有停止循环条件的 while 循环一样,它位于 while 循环的主体中,否则它将永远运行(除非需要,否则这不是代码的一部分的意图)。这取决于程序员的逻辑,只取决于他/她想要做什么。
是的,它用于无限循环,在这种情况下,最佳做法是在某个条件下突破外观
do {
while () //check some condition if it is true
{
calculation 1
}
//some new condition is checked,if condition met then break out of loop
} while(true);
以下循环之间的一般区别因素:
while (condition) {action}
do {action} while (condition)
是前者用于发生零次或多次的循环,而后者用于发生一次或多次的循环。
换句话说,条件 forwhile
在循环开始时被检查,而 for 则在循环do while
结束时被检查。
通常,您会看到开发人员似乎不知道的代码,do-while
因为他们会编写:
result = doSomething();
while (result == NOT_FINISHED) {
result = doSomething();
}
最好写成:
do {
result = doSomething();
} while (result == NOT_FINISHED);
但是,在您的特定情况下,条件总是true
,这并不重要。以下循环基本上是等效1
的(用于真实情况):
for (;;) { doSomething(); }
for (;;doSomething());
while (1) { doSomething(); }
do { doSomething(); } while (1);
while (doSomething(),1);
BADPAX: doSomething(); goto BADPAX;
第一个for
循环可能是执行无限循环的规范方式,利用这样一个事实,即如果您省略循环的继续条件,它会假定它始终为真。
第二个for
循环只是将循环体移动到for
语句的每次迭代部分。
第while
一种有时也出现在野外,但do-while
可能较少见。这里唯一的区别是前者循环永远检查循环顶部,后者循环永远检查循环底部。
最后一个while
循环以您可能永远不应该使用的方式使用 C 逗号运算符:-)
最后一个现在非常罕见,但可能是他们在机器代码级别上都优化到的。
在 C 中,所有循环都在条件为真时循环。因此true
,条件中的显式实际上意味着“循环true
为真”,因此永远循环。
这个循环是无限的,如果你的程序用这样的 lop 终止,你需要在这样的循环中的给定条件下有一个break
或一个return
(或在某些情况下抛出异常)语句,否则这样的程序将永远不会终止。
for
如果停止条件的检查既不能在前面(如and while
)也不能在后面(如)完成,则无限循环很有用do{}while
。相反,您只需永远循环,并且在代码中间您可以检查条件并 break: if(something) break;
。
有时我们使用它,例如:
do
recv(s , &buf, len, flags);
while(true)
winsock windows api的一个例子,通过这种方式你可以从一个端口监听。
do {
// code here
} while(true);
此循环无限运行,如果不停止可能会导致运行时错误。如果您正在执行这些类型的循环,请确保在内部有一个 break 语句以确保您的循环将在某个时候停止。
与此类似
if(condition)
break;
如果您的程序到达某个条件为真的点,它将自动结束 do-while 循环并继续执行之后的代码。