条件选择结构的作用是根据程序的执行结果进行必要的分支操作,从而达到灵活应对的作用。c语言条件选择结构主要包括if条件选择结构以及switch选择结构,下面分别学习。
1、if条件选择
举个小例子,假设班级学生的性别我们用char数据类型来表示,M表示男,W表示女,我们要设计一个小程序,要求能判断某同学的性别,并输出,该如何操作呢?
首先我们要创建一个同学,假设他叫小明,如下:
char xiaoming = 'W';
我们可以通过if条件选择,来确定小明的性别:
if (xiaoming == 'M') {
printf("A boy!\n");
} else if (xiaoming == 'W') {
printf("A girl!\n");
} else {
printf("unknown!\n");
}
该选择结构根据用于存储性别信息的数据与‘W’、‘M’进行比较,来判断小明的性别,当既不是‘W’,也不是‘M’时,执行最后一步操作。在if语句中三中操作必须独立开来,且最好覆盖所有情况。
输出结果如下:
A boy!
2、switch条件选择
同样判断性别的例子,也可以采用switch语句,如下所示:
char xiaohong = 'W';
switch (xiaohong) {
case 'W':
printf("A girl!\n");
break;
case 'M':
printf("A boy!\n");
break;
default:
printf("unknown!\n");
break;
}
输出结果如下:
A girl!
3、两者之间的差别
if和switch虽然都能解决上面的问题,但是这两者之间存在本质的区别。
a、if语句多用于处理集合性质的判断,他的不同分支分别是集合的不同的范围区间,而switch语句处理的多是零散的节点,不能够处理范围性质的数据;
b、if语句的前后两个分支有明显的逻辑关系,如字面意思一样,第二个分支是排除第一个分支之后的情况,而switch的各个节点没有逻辑关系,由程序的顺序由上往下执行,遇到break后,终止,因此break语句在这里至关重要;
c、这两者都能进行嵌套,但是switch语句的嵌套要慎用,必须用时,最好加上大括号;
d、从内存的角度,switch采用了hash寻址,以空间换时间,可以实现更快的检索速度。