【问题标题】:Use of the while loop [duplicate]使用while循环[重复]
【发布时间】:2016-05-15 23:46:42
【问题描述】:

我在很多示例中看​​到了 while 循环的一种使用形式,我不确定在代码中是否可以使用。

 while(1){

    // code lines

    if(condition){
        break;
    }

    // code lines
}

这个可以用吗?是什么

while(1)  

确切的意思?

【问题讨论】:

  • 是的,可以使用。而 while(1) 等价于 while(true) 并且意味着 while 循环不会停止,直到用 break 中断;
  • 没有人阻止你使用它,但你最好确定,虽然它变成了 TRUE,如果不是,......你得到了一个无限循环。

标签: c loops while-loop


【解决方案1】:

在条件=> '1' 始终被视为 TRUE,而 '0' 始终被视为 False。 所以,

当(1) {

}

表示条件为真,它将永远循环,因为“1”是一个常数值并且为真。代码中的“if”条件只能将其从 while 循环中中断。类似地,所有赋值和所有计算结果为 >0 的表达式都被认为是 TRUE

例如:while(3*12){}、while(a=b){}、while(9/3){} 这些将永远循环,除非循环中存在中断循环的条件。

同样,所有计算结果为 '0' 或 FALSE 的表达式都不会进入循环。 例如:while(a=0){}、while(0){}、while(5-5){} 等

【讨论】:

    【解决方案2】:

    while(1) 是一个无限循环条件。但是在您的示例中,当if (condition) 为真时循环结束,因为它是一个break

    【讨论】:

      【解决方案3】:

      只是在 while 循环中满足中断条件的替代方法。 while(1) 只是程序员在 while 循环中强制执行始终为真的语句,使该 while 循环继续进行,直到满足 if 条件。将中断条件放在 while 循环中是惯例,但不是必需的。

      【讨论】:

        【解决方案4】:

        while (1) 一直持续到被中断。您也可以单独使用它,例如在以下示例中。

        int main(){
         signal(SIGINT, SIG_DFL);
         while(1);
        }
        

        这个程序会一直持续下去,直到你按 ctrl + c。

        【讨论】:

          【解决方案5】:

          while(1)for(;;) 相同——它们都表示永远循环

          当退出条件很复杂,或者在循环的顶部不知道,或者作为退出条件位于最底部的do 循环的替代方案时使用。

          有些循环甚至没有出口;想象一个永远不会终止的守护进程,或者一个信号或其他中断驱动的应用程序,其中循环只是执行类似...

          while(1) {
            listen_and_run();
            // or
            sleep(10);
          }
          

          【讨论】:

            【解决方案6】:

            这个可以用吗?究竟是什么

            是的,它在编程中很常用。

            while(1)while(true) 相同,基本上是一个始终为真的条件,确保while 循环永远不会停止,直到您使用break; 手动中断它

            这种行为有很多应用。可能是退出条件非常复杂,需要函数调用等。可能只是您的程序(例如菜单)的无限循环仅在非常特定的提示下退出。您是否经常使用它通常也是一种风格选择。

            【讨论】:

              猜你喜欢
              • 2014-03-23
              • 2013-05-21
              • 1970-01-01
              • 2021-11-09
              • 1970-01-01
              • 2019-04-13
              • 2014-08-29
              • 2011-11-23
              • 2012-07-03
              相关资源
              最近更新 更多