Switch
switch表达式
switch(表达式)
{
case 常量 :
语句;
break;
case 常量 :
语句;
break;
...
default :
语句;
break;(default放在最后是,此break可省略)
}
switch语句注意点:
Switch的条件表达式必须是返回整数的表达式, 也就是说()中只能放整数;或者写能够转换为整数的类型也可以, 例如char, 因为char类型可以转换为int类型, 所以写char也可以;
switch中default可以随便放,总会最后执行,若放在case前.那么break将不能省略,否则会出现穿透问题;
switch在结构完整的情况下比if效率高;
- 巧用穿透,提高效率,例如:
switch(monthValue)
{
case 12:
case 1:
case 2:
printf("您输入的月份为:冬季");
break;
case 3:
case 4:
case 5:
printf("您输入的月份为:春季");
break;
case 6:
case 7:
case 8:
printf("您输入的月份为:夏季");
break;
case 9:
case 10:
case 11:
printf("您输入的月份为:秋季");
break;
default:
printf("您输入的月份有误:请输入1 ~ 12 之间的数值");
break;
}
switch中case的取值问题:
case后面只能放返回值是整数的表达式或者整数, 或者能够转换为整数的类型;
case的取值不能重复;
case后面不能放变量;(因为系统在编译的时候会对Switch后面所有的case进行优化,会根据case后面的常量值,生成一张取值表);
swith中default的位置问题:
Switch中的default可以随便放
无论default写到什么地方,它都会最后执行(只有前面所有的case都不满足的情况才会执行);
只要某一个case满足,那么后面所有的case和default都会失效;同理:只要default满足, 那么所有的case都会失效;