跳转至

第六章 循环

循环( loop )是重复执行某些语句(循环体)的一种语句。在C语言中,每个循环都有一个控制表达式( controlling expression )。每次执行循环体时都要对控制表达式进行计算。如果表达式为真,也就是值不为零,那么继续执行循环。

C语言提供了3种循环语句: while 语句、 do 语句和 for 语句。


while 语句

while 语句的格式如下所示:

while (表达式) 语句

执行 while 语句时,首先计算控制表达式的值。如果值不为零(即真值),那么执行循环体,接着再次判定表达式。

do 语句

do 语句的格式如下所示:

do 语句 while (表达式);

和处理 while 语句一样, do 语句的循环体也必须是一条语句(当然可以用复合语句)。

执行 do 语句时,先执行循环体,再计算控制表达式的值。如果表达式的值是非零的,那么再次执行循环体。

for 语句

for 语句的格式如下所示:

for (表达式1; 表达式2; 表达式3) 语句

循环开始执行前,表达式1是初始化步骤,并且只执行一次,表达式2用来控制循环的终止(只要表达式2不为零,那么将继续执行循环),而表达式3是在每次循环的最后被执行的一个操作。

逗号运算符

有些时候,我们可能喜欢编写有两个(或更多个)初始表达式的 for 语句,或者希望在每次循环时一次对几个变量进行自增操作。使用逗号表达式( comma expression )作为 for 语句中的第一个或第三个表达式可以实现这些想法。

逗号表达式的格式如下所示:

表达式1, 表达式2

逗号表达式的计算要通过两步来实现:第一步,计算表达式1并且扔掉计算出的值。第二步,计算表达式2,把这个值作为整个表达式的值。计算表达式1始终会有副作用;如果没有,那么表达式1就没有了存在的意义。

逗号运算符的优先级低于所有其他运算符。

退出循环

break 语句

break 语句还可以用于跳出 while、 do 或 for 循环。

continue 语句

continue 语句无法跳出循环,它把程序控制正好转移到循环体结束之前的一点。 break 语句可以用于 switch 语句,而 continue 语句只能用于循环。

goto 语句

goto 语句可以跳转到函数中任何有标号的语句处。

标号只是放置在语句开始处的标识符:

标识符: 语句

goto 语句自身的格式如下:

goto 标识符;

执行 goto 语句可以把控制转移到标号后的语句上,而且这些语句必须和 goto 语句本身在同一个函数中。

空语句

语句可以为空,也就是除了末尾处的分号以外什么符号也没有。