2.3 switch 语句
当判断对象是一个整数、字符或枚举值,并且要根据它的不同取值分很多路时,使用一连串 else if 会显得啰嗦。这时可以用 switch 让结构更清晰。
c
switch (op) {
case '+':
printf("%d\n", a + b);
break;
case '-':
printf("%d\n", a - b);
break;
default:
printf("Unsupported\n");
break;
}switch 会用括号里的值去匹配各个 case。匹配成功后,从那个 case 开始往下执行。
注意
switch 只能用于整数类型(int、char、枚举等),不能用于 double 或字符串。break 与贯穿
break 用来跳出 switch。如果忘记写,程序会继续执行后面的 case,这种现象叫做“贯穿”(fall-through)。
有时可以利用贯穿,让多个 case 共享同一段代码:
c
switch (grade) {
case 'A':
case 'B':
printf("通过\n");
break;
case 'C':
printf("及格\n");
break;
default:
printf("不及格\n");
break;
}这里 'A' 和 'B' 共享同一段输出,因为 'A' 后面没有 break,会贯穿到 'B'。但大多数时候忘记写 break 是一种 bug,要小心。
default
default 用来处理所有没有匹配到的情况,作用类似 if-else if-else 里的 else。建议总是写上 default,即使只是输出一条提示,也能让程序在遇到意外输入时有明确行为。
正在加载交互实验...
正在加载概念检查...
正在加载本节练习...