switch 语句¶
在实际编程中,先把 if 用好。
在一些考试中,switch 会出现在选择判断中,要能看懂。
基本语法¶
switch 适合根据同一个表达式的值,选择不同的分支。
比如,根据月份的值,判断季节。
switch (表达式) {
case 值1:
语句1;
break;
case 值2:
语句2;
break;
case 值3:
语句3;
break;
default:
其他情况的语句;
break;
}
匹配到哪个 case,就从那里开始执行。都不匹配,就执行 default。
default 可以不写。不写时,如果都不匹配,就不执行里面的语句。
判断奇偶
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
// 负奇数除以2的余数是-1,也要处理
switch (n % 2) {
case 1:
case -1:
cout << "odd";
break;
case 0:
cout << "even";
break;
}
return 0;
}
break,结束 switch¶
匹配到 case 后,不会自动停下来。
遇到 break,才会跳出当前的 switch;不写,就会继续往下执行,不会重新判断下一个 case 是否匹配。
这里输出 AB。从 case 1 进入,接着执行 case 2 后面的语句,遇到 break 才结束。
多个 case 对应同一种情况¶
几个值要做同一件事,可以把 case 连着写,共用后面的代码。
根据月份判断季节
#include <iostream>
using namespace std;
int main() {
int month;
cin >> month;
switch (month) {
case 12:
case 1:
case 2:
cout << "冬天";
break;
case 3:
case 4:
case 5:
cout << "春天";
break;
case 6:
case 7:
case 8:
cout << "夏天";
break;
case 9:
case 10:
case 11:
cout << "秋天";
break;
default:
cout << "输入错误";
break;
}
return 0;
}
常见错误¶
case 后面写常量,不写判断条件
不能用 case x > 10: 表示“x大于10”。判断范围,用 if 更合适。
同一个 switch 中,case 的值不能重复。
case 后面是冒号,不是分号
别漏掉 break
除非有意让几个分支共用代码,否则每段代码写完,注意加上 break。
不是所有类型都能放进 switch
这里先用 int、char。不能直接用 double 或 string 做这样的分支选择。