3.10、死循环

By | 2015年12月13日

在编程中,我们将那些无法通过自身退出的循环成为死循环

要制造一个死循环很简单,我们只需要使循环的条件永远为真即可

例如我们可以写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,让它陷入无穷无尽的循环里(放心,人家不会生气的)

上面这些例子并不意味着死循环都是有用的,当死循环不是我们所需要的时候,它就变得很讨厌了

例如上一个程序,它要求我们输入数字,但是你有没有想过输入一个字母呢?

如果你试过,那么它将导致一个死循环!(具体原因我们将在后面讨论)

这种死循环是完全不可控的,你只能通过强制终止程序来停止它!这种情况的死循环,是我们需要避免的

发表评论

邮箱地址不会被公开。 必填项已用*标注