——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
一、switch简介:
C语言中,程序结构分为3种:顺序结构,分支结构,顺序结构。switch属于分支结构。
switch语法结构:
switch (条件) {
case <#constant#>:
<#statements#>
break;
case <#constant#>:
<#statements#>
break;
default:
break;
}
二、原理:
根据条件的值,寻找下面case语句后的constant,如果与constant匹配,则执行该constant后的语句,直至break或switch的”}”结束,所以要注意break的省略问题。
其中“条件”的值,必须是一个整型,可以为以下4种:
1.可以放一个整型的变量。Int num = 10;switch(num);
2.可以放一个整型常量。Switch(10)
3.可以放一个返回值是整型的表达式。Switch(5+5),switch(num=5+5)
4.可以放可以转换为int类型的表达式。Switch(‘a’+’a’)
举例如下:
#include <stdio.h>
int main(int argc, const char * argv[]) {
/*
例1:某一个分数,分数范围为0-100,要求得出输入分数的等级:
90 - 100 A;
80 - 89 B;
70 - 79 C;
60 - 69 D;
<60 E.
*/
int score, s;
//提醒用户输入并接收输入数值。
printf("请输入一个分数,分数范围为0-100。\n");
scanf("%d",&score);
//判断分数是否合法
if (score < 0 || score > 100) {
printf("对不起,您输入的分数不合法。\n");
}else{
s = score / 10; //将score除以10,用来switch的条件判断
switch (s) {
//因为结果为9,10都为A,所以这两个结果可合并,利用case的穿透性。
case 9:
case 10:
printf("您输入的分数的等级为A。\n");
break;
case 8:
printf("您输入的分数的等级为B。\n");
break;
case 7:
printf("您输入的分数的等级为C。\n");
break;
case 6:
printf("您输入的分数的等级为D。\n");
break;
default:
printf("您输入的分数的等级为E。\n");
break;
}
}
return 0;
}
1.以上switch语句可以将default移动上面任何位置,即与case位置互换。如:
switch (s) {
//因为结果为9,10都为A,所以这两个结果可合并,利用case的穿透性。
case 9:
case 10:
printf("您输入的分数的等级为A。\n");
break;
case 8:
printf("您输入的分数的等级为B。\n");
break;
default:
printf("您输入的分数的等级为E。\n");
break;
case 7:
printf("您输入的分数的等级为C。\n");
break;
case 6:
printf("您输入的分数的等级为D。\n");
break;
}
如果default语句没有放在最后,其后面的break语句一定不能省略,因为它也有穿透性。
2.default的意义是,如果没有一个case后的结果与条件对应,那么将执行default语句;当default没有必要使用时,可以省略。如上例语句:
default:
printf("您输入的分数的等级为E。\n");
break;
可以替换为:
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
printf("您输入的分数的等级为E。\n");
三、由上述可知,switch与if可以相互替换使用,那我们什么时候使用switch呢?这并没有一个选择标准,不过当可能性>3个时,我们应该优先选用switch。因为代码可读性很好,编写也相对简单。