一、什么是死循
简单来说,死循环就是指无法靠自身的控制终止循环,在编程中,则是靠自身控制无法终止的程序。即在某一时刻,当程序遇到循环判断语句使条件一直成立时,导致此时该程序始终在执行,跳不出循环,程序不能自己正常结束。
我们先来看一个简单的死循环程序:
#include<stdio.h>
#include<Windows.h>
int main()
{
int n = 0;
while (1)
{
printf("%d\n", n++);
Sleep(100);//延时100ms,头文件Windows.h
}
return 0;
}
如上图所示,循环判断条件一直为真,循环语句中并无结束的条件,一直打印n++的结果。
二、while与死循环
#include<stdio.h>
#include<Windows.h>
int main()
{
int i = 0;
while (i <= 20)
{
if (i == 10)
continue;
printf("%d ", i);
Sleep(500);//延时500ms,头文件Windows.h
i += 1;
}
return 0;
}
如图所示,该循环打印结果到数字9时,光标一直在闪烁,这是为什么?因为程序进入了死循环,当i == 10时,if 条件成立,执行continue,此时使得程序跳过本次循环开始下一次循环,但此次循环并没有改变 i 的值,所以导致后续程序进入死循环。
三、for与死循环
#include<stdio.h>
#include<Windows.h>
int main()
{
int i = 0;
int j = 0;
for (i = 0, j = 0; j = 1; i++, j++)
{
j++;
printf("%d ", j);
Sleep(100);//延时100ms
}
return 0;
}
如图所示,该循环一直在打印数值 2,程序进入死循环,为什么会发生这种情况,翻看程序,我们可以看见,for循环的判断部分,是为 j = 1,此时判断部分非0,表示循环判断一直为真,程序一直进行;同时,判断语句 j = 1 使得 j 每次都被重新赋值为1,所以在循环体内 j++ 后,一直打印数值 2。