从C++0基础到C++入门(第十五节:switch语句)
一. switch语句
1.1 语法结构如下:
switch (表达式) {case 常量1:// 代码块1break;case 常量2:// 代码块2break;default:// 默认代码块
}
1.2 注意 :
- 表达式必须是整型或枚举类型(如
int
、char
)。 case
后的常量必须与表达式类型兼容。- 学会使用
break
。 default
为可选分支,当所有case
不匹配时执行。
二. switch与if-else的对比
适用场景
switch
适合多分支且条件为离散值(如枚举、固定常量)。if-else
更适合范围判断或复杂逻辑(如x > 10 && y < 20
)。
性能差异
switch
可能被优化为跳转表(效率高),而if-else
需逐条判断。
2.1 注意事项
穿透问题
省略break
会导致代码继续执行后续case
,需谨慎使用。例如:switch (x) {case 1: cout << "1"; // 无break,继续执行case 2case 2: cout << "2"; break; // 输出"12" }
变量作用域(稍微复杂的使用)
case
块内定义的变量需用花括号限定作用域,否则会报错:switch (x) {case 1: {int y = 10; // 正确:作用域限于当前casebreak;} }
default分支
即使没有匹配项,也建议添加default
以处理意外情况,增强鲁棒性。
三. 具体案例练习:
3.1 判断星期几的输出:
int day = 3;
switch (day) {case 1: cout << "Monday"; break;case 2: cout << "Tuesday"; break;case 3: cout << "Wednesday"; break; // 输出"Wednesday"default: cout << "Invalid day";
}
3.2 常见错误
- 在
case
中声明变量未加花括号。 - 遗漏
break
导致意外穿透。 - 使用浮点数或字符串作为
switch
表达式(不合法)。