r C语言中while(1)和while(0)的区别

在大多数计算机编程语言中,while 循环是一种控制流语句,它允许基于给定的布尔条件重复执行代码。布尔条件为真或假。

while(1)

这是一个无限循环,将一直运行到明确发出 break 语句。 有趣的是,不全是指 while(1),而是任何非零整数都会产生与 while(1) 类似的效果。 因此,while(1)while(2)while(-255) 都只会是无限循环。

我们将条件写在括号()中。 条件可以解析为真或假。 所以 0 代表假,除此之外的任何值都是真。如此合乎逻辑:

while(true) ==while(1)==while(任何代表真的值);
while(false)==while(0);

while(1) or while(any non-zero integer)
{ 
    // loop runs infinitely
}

while(1)的简单用法可以在客户端-服务器程序中。在程序中,服务器在无限循环中运行,以接收客户端发送的数据包。但实际上,不建议在现实世界中使用 while(1),因为它会增加 CPU 使用率并且还会阻塞代码,即在手动关闭程序之前无法从 while(1) 中退出vsdifFerwhile(1)可用于条件需要始终为真的地方vsDiFFER

C语言实现:

// C program to illustrate while(1)
#include <stdio.h>
int main()
{
    int i = 0;
    while (1) {
        printf("%d
", ++i);
        if (i == 5)
            break; // Used to come
                // out of loop
    }
    return 0;
}

C++实现:

#include <iostream>
using namespace std;

int main()
{
    int i = 0;
    while (1) {
        cout << ++i << "\n"
        if (i == 5)
            // Used to come
            // out of loop
            break;
    }
    return 0;
}

运行结果:

1
2
3
4
5

while(0)
while(0)while(1)相反。 这意味着条件将永远为假,因此 while 中的代码永远不会被执行。

while(0)
{ 
    // loop does not run
}

C语言示例代码:

// C program to illustrate while(0)
#include<stdio.h>
int main()
{
  int i = 0, flag=0;
  while ( 0 )
  {
    // This line will never get executed
    printf( "%d
", ++i ); 
    flag++;
    if (i == 5)
      break;
  }
  if (flag==0)
     printf ("Didn't execute the loop!");
 return 0;
}

C++实现:

#include <iostream>
using namespace std;

int main() {
int i = 0, flag=0;
while ( 0 )
{
    // This line will never get executed
    cout << ++i << "\n"
    flag++;
    if (i == 5)
    break;
}
if (flag==0)
    cout << "Didn't execute the loop!";
return 0;
}

运行结果如下:

Didn't execute the loop!
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.vsdiffer.com]
本文标题:C语言中while(1)和while(0)的区别
本文链接:https://www.vsdiffer.com/vs/difference-while1-while0-c-language.html
免责声明:以上内容仅是站长个人看法、理解、学习笔记、总结和研究收藏vSdiffer。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。
VsDIffER