📜  C语言中while(1)和while(0)之间的区别

📅  最后修改于: 2021-05-26 00:52:41             🧑  作者: Mango

先决条件:C / C++中的while循环
在大多数计算机编程语言中,while循环是控制流语句,该语句允许根据给定的布尔条件重复执行代码。布尔条件为true或false

而(1)

这是一个无限循环,它将一直运行到显式发出break语句为止。有趣的是,不是while(1),而是任何非零的整数都会产生与while(1)类似的效果。因此,while(1),while(2)或while(-255)都将仅给出无限循环。

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

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

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


C++
#include 
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;
}


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


C++
#include 
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;
}


输出
1
2
3
4
5

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

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

C

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

C++

#include 
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!
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。