7.10 无限循环

我们目前看到的循环都带有明确的条件表达式,使得循环会在该表达式不成立时结束。对于大多数需求来说,我们确实应该编写这种循环。但有时我们也会写出永不结束的循环,也就是所谓的无限循环(infinite loop),这可能是因为开发者不小心,也可能是考虑某种原因而故意这么做。比方说,下面几种情况可能需要编写无限循环:

□用户需要跟我们的程序交互,直至他决定退出该程序为止。

□提供输入数据的这条渠道没有明确的结尾,例如我们要通过网络接收数据,但并不清楚网络中什么时候不再传来数据。

□操作系统要实现事件循环(event loop),以处理系统运行过程中发生的各种事件。这个事件循环在操作系统启动时就必须开始运作,直至该系统关闭为止。

如果程序要接受用户的输入信息(例如按键或鼠标动作),那么就可以通过无限循环来处理这些输入。我们还需要在无限循环的循环体里面通过break、goto或return语句适当地跳出该循环。

下面我们就用for()...语句实现一个简单的无限循环:

在for()...语句的控制表达式之中,如果条件表达式没有明确写出,那么程序就默认这一部分的求值结果是true,控制表达式的另外两部分(也就是计数器的初始化语句及调整语句)同样可以省略。

我们再举一个例子,比方说计算机操作系统的主例程,它在把自己需要用到的各种附属程序都加载进来之后,可能就会进入类似下面这样的循环逻辑:

虽然这个例子是个极度简化的版本,但我们依然可以通过它感受到计算机的操作系统如何通过无限循环来维持运作并处理各种事件。