第六章 循环
循环( 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 语句本身在同一个函数中。
空语句
语句可以为空,也就是除了末尾处的分号以外什么符号也没有。