在编程中,我们将那些无法通过自身退出的循环成为死循环
要制造一个死循环很简单,我们只需要使循环的条件永远为真即可
例如我们可以写1==1,1<10,等等。当然,最为简便的方法是使用一个非0数字,例如
#include <stdio.h> #include <stdlib.h> int main() { int i = 0; while(1) { printf("%d\n", i++); } return 0; }
如果你运行上面这个程序,你将会发现程序将不停的打印数字
通常来说,你cpu的一个核心甚至会满载
因此,如果你在一台使用单核cpu的电脑上运行此程序,计算机将变得极其缓慢(很多人认为这样做很有趣)
不过对于现在计算机通常都有2个以上的核心,“死机”问题也就没有那么容易产生了
当然,如果你也想尝试一下你的电脑被自己编的程序搞得“死机”,多运行几个此程序即可!
死循环也是有用的!
并不是所有情况下,我们都希望程序会退出,因此我们可以用死循环来达到这个目的,例如下面的程序将要求您输入5这个数字才能退出。反之,如果你输入其他数字,它将无限循环
#include <stdio.h> #include <stdlib.h> int main() { int foo = 0; do { printf("请输入5:"); scanf("%d", &foo); }while(foo != 5); return 0; }
还有一些环境程序不能退出,例如在单片机内(不懂请百度)
在单片机编程中,在无事可干时甚至会用一个while(1);来打发CPU,让它陷入无穷无尽的循环里(放心,人家不会生气的)
上面这些例子并不意味着死循环都是有用的,当死循环不是我们所需要的时候,它就变得很讨厌了
例如上一个程序,它要求我们输入数字,但是你有没有想过输入一个字母呢?
如果你试过,那么它将导致一个死循环!(具体原因我们将在后面讨论)
这种死循环是完全不可控的,你只能通过强制终止程序来停止它!这种情况的死循环,是我们需要避免的