【问题标题】:Why while(true) is an infinite loop? [closed]为什么 while(true) 是一个无限循环? [关闭]
【发布时间】:2015-03-21 08:19:20
【问题描述】:

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

我刚开始用 C 编程并学会了

while(true)
{
}

形成一个无限循环。

据我了解,这意味着函数在“真”的条件下执行。但是,这是什么意思?条件是否始终设置为“真”?

请有人解释一下!

【问题讨论】:

  • 是的,条件总是被评估为真。
  • 请不要随意投反对票。这是一个有效的(尽管是新手)问题。
  • 太糟糕了,我们不能投票给 cmets。
  • 您最好使用 Google 搜索。搜索 c while statement 会返回一个指向 MSDN 文档的链接,该文档解释了 while 语句的工作原理,很明显,使用 true 作为表达式会导致无限循环。
  • 我投票决定将此问题作为离题结束,因为它要求对重言式进行解释。

标签: c while-loop infinite-loop


【解决方案1】:

给定:

while (a)
{
    // b
}

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

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

【讨论】:

    【解决方案2】:

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

    while (condition) {
        code block to be executed
    }
    

    这里 true 的计算结果始终为 true (true == true),所以这将是一个无限循环

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

    while(true == true) { }
    

    1 和其他 non falsy 值也是如此

    【讨论】:

      【解决方案3】:

      因为“真”始终为真。

      【讨论】:

        【解决方案4】:

        那么,你是如何提出这个条件变成假的?

        把那句话想成是:

        while(true == true) { }
        

        【讨论】:

          【解决方案5】:

          引用tutorialspoint.com

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

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

          但是,你会问“条件何时为真”?

          举个简单的例子来解释一下

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

          如果满足条件,所有Relational Operators(如< > == != 等)都返回true,这就是它的工作原理。

          因此,如果a 大于b,则条件a > b 返回真(或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,循环将停止。

          【讨论】:

            【解决方案6】:

            while循环就是这种格式

            While(Condition){ 
            code to execute
            }
            other code
            

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

            当 While 循环中的条件评估为真时,它会运行“要执行的代码”直到右括号,然后再次检查条件。当条件为真时,它会再次循环。

            如果它的错误“其他代码”将被执行,那么当条件永远不会改变时它也会始终保持真实,它是一个无限循环

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

            While(1){}
            

            也是一个无限循环

            【讨论】:

            • 请重新拼写、重新大写、标点符号和段落这个难以辨认的混乱。
            猜你喜欢
            • 2016-07-27
            • 2013-04-19
            • 2023-04-03
            • 2018-04-30
            • 2020-10-30
            • 2018-03-17
            • 2016-07-14
            • 2012-05-02
            • 1970-01-01
            相关资源
            最近更新 更多