第4章 循环语句和goto语句
4.1 while语句
语法格式:
while (<表达式>) 语句;
在这个语句中,表达式描述循环的条件,如果表达式的值为0,就停止语句,否则继续执行语句部分。语句部分可以是一句或复合语句。
4.2 for语句
for语句和while语句的最大区别在于for循环语句会对循环控制变量进行初始化。
语法格式如下:
for (表达式1;表达式2;表达式3) <语句>
表达式1只在for语句开始时被执行一次,一般用于设置循环的初始状态;表达式2说明循环的条件,其值不等于0时执行循环体内的语句,如果不写则代表一直是1;表达式3用于每次循环体语句运行完毕后修改循环控制变量的状态。
有趣的是,表达式123都是可以为空的,只要两个“;”存在,for循环语句就合法。
4.3 do while语句
无论是for语句还是while语句,对循环控制条件的判断都在语句之前。但有时候需要先执行某些语句再进行判断,所以就有do while语句,语法格式如下:
do <语句> while <表达式>;
首先执行语句部分,然后计算表达式。表达式不等于0,则继续执行语句部分。
4.4 逗号表达式
由逗号分隔的两个表达式在语法上可以看成一个整体,称为逗号表达式。由逗号分隔的子表达式按照从左至右的顺序依次求值,而表达式的值等于其中最右侧子表达式的值。例如:
r=(a=x,b=y,c=z);
等价于:
a=x; b=y; c=z; r=z;
4.5 循环语句的嵌套
这可以说是循环语句的精华了。但并不困难,不过是循环中的语句里也有循环语句罢了。用到的地方很多,这里不再举例。
4.6 循环语句中的非常规控制
1.break
break用于循环体或switch语句。程序在循环中遇到break语句时就立即结束对循环语句的执行,从循环体内直接跳出循环。
2.continue
continue是循环语句专用的一种跳转语句,它的作用是使程序跳过循环体中该句后面的其他语句而进行下一轮的循环。
注意,break和continue都只会影响多重循环中它所在的一层循环。
4.7 goto语句
goto是一种无条件跳转语句,可以使程序的执行转向同一函数中的任意语句。
goto语句是和语句标号一起使用的。语句标号在程序中标志一条语句的位置。使用标号时,需要将语句标号的标识符放在一条语句前面,并用一个冒号将这个标识符与它所标志的语句分开。比如:
A:x=y+z;
A就是语句”x=y+z”的标号。
goto的用法则是:
goto A;
注意,标号和goto语句必须在同一个函数中,至于函数,是我们下一章详细介绍的内容。