空语句
嗯,最后还有一种特别简单的语句叫做空语句(Null statement)。空语句是表达式语句的一种。
空语句的写法非常简洁,就一个分号 ;
:
;
空语句的含义正如字面意思,就是什么也不做。计算机执行空语句时不执行任何操作。那读者可能会一脸问号说,不执行任何操作的语句有啥用啊?目前来看,最常见的用途只有一个:在 for 循环中作为空位。
有时候 for 循环的三个要素(初始语句、条件表达式和迭代表达式)已经足够完成任务了,这个时候循环体可以什么都不做。比如检测数组 a 的第一个偶数:
for (i = 0; a[i] % 2; i++)
;
那么此时三要素已经足够完成这个过程了,就不需要循环体再做什么额外的工作了。这个时候,循环体就可以放一个空语句。
当然你也可以放一个不含子句的复合语句,编译器一般也推荐你这样做。
我们已经知道了如何用 while 实现无限循环。那么对于 for 来说,也可以:
因为迭代表达式是可选的,所以这里就不写它了。除此之外,条件表达式也是可选的:当不写条件表达式时,条件将恒为 true
,也就是无限循环。所以可以简化为:
for (i = 0;;) {
// 无限循环的内容
}
最后,因为空语句也是表达式语句的一种,所以将初始语句写成空语句也是没有问题的:
for (;;) {
// 无限循环的内容
}
这样看来,for 语句无限循环比 while 语句会稍微简洁一点,但没有那么直观。
没有输出的无限循环可能导致未定义行为。