为什么while(true)是无限循环?

时间:2015-03-21 08:19:21

标签: c while-loop infinite-loop

我试图在stackoverflow中搜索这个问题,但没有找到它。如果在其他地方发布,请随意删除此帖子(请链接我...)。

我刚开始使用C编程并了解

while(true)
{
}

形成一个无限循环。

据我了解,这意味着该函数以" true"的条件执行。但是,这是什么意思?条件是否始终设置为" true"首先是什么?

请有人解释一下!

6 个答案:

答案 0 :(得分:3)

假设:

while (a)
{
    // b
}

如果a为真,则执行块b。这将一直重复,直到a不成立。

如果将a替换为常量值true,则a将永远不会为假,因此循环永远不会退出。

答案 1 :(得分:3)

只要指定的条件为真,while循环就会循环遍历代码块。

while (condition) {
    code block to be executed
}

此处 true 总是评估为 true (true == true)所以它将是一个无限循环

while(true) { } // always evaluates to true

相同
while(true == true) { }

同样适用于 1 和其他non falsy

答案 2 :(得分:2)

因为'true'总是如此。

答案 3 :(得分:0)

那么,你如何建议这种情况变得虚假?

将该行视为:

的同义词
while(true == true) { }

答案 4 :(得分:0)

while循环采用这种格式

While(Condition){ 
code to execute
}
other code

while循环计算条件中的表达式。

当While循环中的条件计算为true时,它运行"代码来执行"直到关闭括号,然后再次检查条件。当条件为真时,它会再次循环。

如果它是假的"其他代码"将被执行所以当条件永远不会改变时它也将永远保持为无限循环

在C中你也可以写一个而不是真所以这个循环,

While(1){}

也是一个无限循环

答案 5 :(得分:0)

引自tutorialspoint.com

  

只要给定条件为真,C编程语言中的while循环语句就会重复执行目标语句。

现在这意味着只要条件为真,循环就会继续。

但是,你会问“条件何时成立?”

要解释一下,举一个简单的例子

int a = 5 , b = 2 ;
while ( a > b )
  {
     printf ( " %d " , a );
  }

所有Relational Operators(如< > == !=等)如果符合条件,则返回true,这就是它的工作方式。< / p>

因此,如果a > b大于a,则条件b将返回true(或1)。 (请注意,这是一个无限循环,因为b的值始终小于a

只要条件不为零,while循环就会继续。

这意味着类似

while ( 2 ) 
  {
  }

也是一个无限循环(因为2非零,因此是真的)。​​

但如果是

while ( 0 )
  {
  }

0等于false,因此,不执行循环。

但是,这段代码

int a = 5 , b = 2 ;
while ( a > b )
  {
     printf ( " %d " , a );
     b++;
  }

不是无限循环,因为在执行循环几次后,b将变为6,大于a,因此条件( a > b )将返回false,循环将停止。