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)
中退出。 while(1)
可用于条件需要始终为真的地方。
C语言实现:
// C program to illustrate while(1)
#include <stdio.h>
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 <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\n", ++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!