简单做while while while while(true);

时间:2013-02-18 10:49:05

标签: c loops do-while

在C程序的例子中,很多次我遇到过这种循环。这些循环真正做了什么?

do {

    while (...) // Check some condition if it is true.
    { 
        calculation 1
    }

    // Some new condition is checked.

} while(true);

while(true);需要什么?是否用于无限循环?有人可以解释上面的循环真正做了什么。我是C编程的新手

8 个答案:

答案 0 :(得分:6)

当想要永远循环并且循环中的分解条件未知时,使用这些循环。 Certiain条件在循环内设置,并且中断返回语句从循环中出来。 例如:

while(true){
    //run this code
    if(condition satisfies)
        break;    //return;
}

这些循环就像任何其他循环一样,具有停止循环的条件的循环位于while循环的主体中,否则它将永远运行(在需要之前,这绝不是代码的一部分)。 这取决于程序员的逻辑,只取决于他/她想做什么。

答案 1 :(得分:1)

是的,它用于无限循环,在这种情况下,最佳做法是打破条件

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);

答案 2 :(得分:0)

在条件为真时,在C all循环中循环。因此,条件中的显式true实际上意味着“true为真时循环”,因此永远循环。

答案 3 :(得分:0)

这个循环是无限的,如果你的程序要用这样的lop终止,你需要在给定条件下有breakreturn(或者在某些情况下抛出异常)语句在这样的循环中,否则这样的程序永远不会终止。

答案 4 :(得分:0)

如果停止条件的检查既不能在前面(如forwhile)也不能在后面(与do{}while一样),则无限循环很有用。相反,你只需要永远循环,在代码中间你可以检查条件并中断:if(something) break;

答案 5 :(得分:0)

有时我们会使用它,例如:

do
     recv(s , &buf, len, flags);
while(true)

来自winsock windows api的示例,通过这种方式,您可以从端口收听。

答案 6 :(得分:0)

do {
  // code here
} while(true);

此循环无限运行,如果未停止,可能会导致运行时错误。如果你正在进行这种循环,请确保在内部有一个break语句,以确保你的循环在某个时刻停止。

与此相似

if(condition)
   break;

如果您的程序达到条件为真的某个点,它将自动结束do-while循环并在此之后继续执行代码。

答案 7 :(得分:0)

以下循环之间的一般区别因素:

while (condition) {action}
do {action} while (condition)

前者用于发生或更多次的循环,而后者用于发生一次或更多次的循环。

换句话说,在循环开始时检查while的条件,对于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逗号运算符: - )

现在最后一个非常罕见,但很可能它们都在机器代码级别进行优化。