C语言的控制流
程序语言中的控制流语句用于控制各计算操作的执行次序。
1.if-else语句
if-else语句用于条件判定。语法如下:
if(表达式)
语句1
else
语句2
其中else语句是可选语句,该语句执行时,先计算表达式的值,如果其值为真,则执行语句1;如果其为假,并且该语句包含else部分,则执行语句2。
2.else-if
在C语言中,我们经常遇到一下结构:
if(表达式)
语句
else if(表达式)
语句
else if(表达式)
语句
else if(表达式)
语句
else
语句
这种if语句序列是编写多路判定最常用的办法。其中的各表达式将被依次求值,一旦某个表达式结果为真,则执行与之相关的语句,并终止整个语句序列额执行。最后一个else部分用于处理“上述条件均不成立”的情况或默认情况,也就是当上面的各种条件都不满足时的情况。
3.switch语句
switch语句是一种多路判定语句,它测试表达式是否与一些常量整数值中的某一个值匹配,并执行相应的分支动作。
switch(表达式)
{case 常量表达式:语句序列
case 常量表达式:语句序列
default:语句序列
}
每一个分支都是由一个或者多个整数值常量或者常量表达式标记。如果谋个分支与表达式的值匹配,则从该分支开始执行。各分支表达式必须不同。如果没有那一分支能支配匹配的表达式,则执行标记为default的分支。default分支是可选的。如果没有default分支也没有其他分支与表达式的值匹配,则该switch语句不执行任何动作。在switch语句中有break语句。程序中存在break语句,则将导致程序的执行立即从switch语句中推出。在switch语句中,case的作用只是一个标号,因此,某个分支的代码执行完成后,程序将进入下个分支继续执行,除非在程序中显式的跳转,跳出switch语句最常用的方法是用break语句与return语句。
4.while循环与for循环
while循环语句
while(表达式)
语句
在while循环中,首先求表达式额值。如果其值为真非0,则执行语句,并再次求该表达式的值。这以循环过程一直进行下去,知道该表达式的值为假(0)为止,随后执行语句后面的部分。
for循环语句
for(表达式1;表达式2;表达式3)
语句
它等价与下列while语句:
表达式1;
while(表达式2){
语句
表达式3;
}
但当while或者for循环语句中包含continue语句时,上述二者之间就不一定等价了。
从语法角度看,for循环语句的是那个组成部分都是表达式。最常见的情况是,表达式1与表达式3是赋值表达式活函数调用,表达式2是关系表达式。
在程序设计时到底选用while语句还是for语句主要取决于程序员的个人偏好。但如果语句中需要执行简单的初始化和变量递增,使用for循环语句更加自然一些。
逗号运算符“,”也是C语言中优先级最低的运算符,在for语句中经常遇到它。被逗号分隔的一对表达式将按照从左至右额顺序进行求值,各表达式右边的操作数的类型和值即为其结构的类型和值。这样,在for循环语句中,可以将多个表达式放在各个语句成分中,比如同时处理两个循环控制变量。
5.do-while循环
在C语言中while和for循环语句都是在循环体执行前对终止条件进行测试,而do-while循环则在循环体执行后测试终止条件,这样循环体最少被执行一次。
do-while循环语句
do
表达式
while(表达式);
在这一结构中,先执行循环体语句中的部分,然后再求表达式的值。如果表达式的值为真,则再次执行语句,以此类推。当表达式的值为假,则循环终止。一般情况下,do-while循环比while和for循环用的少,但在一些情况下,do-while循环还是很有用。
6.goto语句
C语言提供了可随意滥用的goto语句以及标记跳转位置的标号。从理论上来讲,goto语句是没有必要的。但在一些场合goto语句还是用的着。最常见的用法是终止程序在某些深度嵌套的结构中的处理过程,例如一次跳出一个或多个循环,这种情况下break语句是不能达到目的的,它只能从内层循环退出到上层循环。举例:
for(...)
for(...){
......
if (disaster)
goto error;
}
...
error:
处理错误情况
在这个例子中错误可能出现在多个地方,使用goto语句将会比较方便。
我目前所了解的控制流就是这些,在这些控制流中,for循环是我最喜欢的控制流结构。