选择结构程序设计
注:本文为学习《C语言从入门到精通》时,对部分章节的总结
1、if语句
C语言判断操作,if语句。
2、if语句的基本形式
if语句有if、if...else和else if 3种形式。
2.1、if语句形式
if (表达式) 语句
2.2、if...else语句形式
if (表达式) {
语句块1;
} else {
语句块2;
}
一个else语句必须跟在一个if语句后。
2.3、else if语句形式
if (表达式1) {
语句1
} else if (表达式2) {
语句2
} else if (表达式3) {
语句3
}
...
} else if (表达式m) {
语句m
} else {
语句n
}
3、if的嵌套形式
在if语句中又包含一个或多个if语句,称为if语句的嵌套。
if (表达式1) {
if (表达式2) {
语句块1
} else {
语句块2
}
} else {
if (表达式3) {
语句块3
} else {
语句块4
}
}
使用if语句嵌套时,应注意if与else的配对情况。else总是与其上面最近的未配对得发进行配对。
4、条件运算符
if (a > b) {
max = a;
} else {
max = b;
}
以上代码可以用条件运算符“?:”进行简化
max = (a > b) ? a : b;
条件运算符形式:
表达式1 ? 表达式2 : 表达式3;
5、switch语句
使用嵌套的if语句可以实现多分支的选择,但分支较多时,就是使得嵌套的if语句层数较多,程序冗余,可读性变差。可以使用switch语句处理分支选择的情况,可提高程序的可读性。
5.1、switch语句的基本形式
switch (表达式) {
case 情况1:
语句块1;
case 情况2:
语句块3;
...
case 情况n:
语句块n;
default:
默认情况语句块;
}
switch语句检验的条件必须是一个整型表达式,意味着其中可已包含运算符和函数调用。而case语句检验的值必须是整型常量,集常量表达或常量运算。
在使用switch语句时,如果没有一个case语句的值能匹配switch语句的条件,则执行default语句后的代码。任意两个case语句都不能使用相同的常量值;每个switch结构只能有一个default语句,default语句可以省略。
5.2、多路开关模式的switch语句
switch (表达式) {
case 1:
语句1
break;
case 2:
case 3:
语句2
break;
...
default:
默认语句
break;
}
此时符合case 2和case 3,情况一样。
6、if...else语句和switch语句的区别
6.1、语法的比较
if需要平配合else关键字进行使用,switch需要配合case关键字进行使用;if语句是先对条件进行判断,而switch预计是后进行判断。
6.2、效率的比较
if...else结构对少量的检验,判断速度比较快,但随着检验的增长,会逐渐变慢,并且不易进行后续的添加扩充。
switch结构中,除了的default默认情况下,对其他每一项case的检验速度都是相同的,default默认情况比其他情况都快。
一般分支在3个或4个以下,用if...else结构更快,反之应选择switch结构。