C++的switch语句是一种常用的多分支选择控制结构,适合处理单个变量与多个固定值匹配的场景,相比多层嵌套的if else语句,它的逻辑结构更直观,执行效率也更高。下面我们先通过一个简单的示例了解switch的基础使用方式。

switch语句的基本语法
switch语句的核心是将一个表达式的值与多个case标签的值进行匹配,匹配成功后执行对应的代码块,基本语法结构如下:
switch (表达式) {
case 常量1:
// 表达式值等于常量1时执行的代码
break;
case 常量2:
// 表达式值等于常量2时执行的代码
break;
// 可以有任意多个case分支
default:
// 所有case都不匹配时执行的代码
break;
}
这里的表达式的结果必须是整型、字符型或者枚举类型,case后面的常量必须是编译期可确定的常量,不能是变量或者表达式。
基础使用示例
下面是一个根据输入的数字输出对应星期几的简单示例:
#include <iostream>
using namespace std;
int main() {
int day;
cout << "请输入1-7之间的数字:" << endl;
cin >> day;
switch (day) {
case 1:
cout << "今天是星期一" << endl;
break;
case 2:
cout << "今天是星期二" << endl;
break;
case 3:
cout << "今天是星期三" << endl;
break;
case 4:
cout << "今天是星期四" << endl;
break;
case 5:
cout << "今天是星期五" << endl;
break;
case 6:
cout << "今天是星期六" << endl;
break;
case 7:
cout << "今天是星期日" << endl;
break;
default:
cout << "输入的数字不在1-7范围内" << endl;
break;
}
return 0;
}
核心注意事项
break关键字的作用
break的作用是跳出当前的switch语句,如果不写break,程序会继续执行下一个case中的代码,这种现象叫做case穿透。比如上面的示例如果去掉case 1后面的break,当输入1时,会先输出星期一,然后继续执行case 2的代码输出星期二,直到遇到break或者switch结束。
合理利用case穿透可以简化代码,比如多个case需要执行相同逻辑时:
#include <iostream>
using namespace std;
int main() {
int score;
cout << "请输入成绩等级(A/B/C/D):" << endl;
cin >> score;
switch (score) {
case 'A':
case 'B':
cout << "成绩合格,表现优秀" << endl;
break;
case 'C':
cout << "成绩合格,需要继续努力" << endl;
break;
case 'D':
cout << "成绩不合格,需要补考" << endl;
break;
default:
cout << "输入的成绩等级不合法" << endl;
break;
}
return 0;
}
default分支的作用
default分支是可选的,当所有case都不匹配表达式的值时,会执行default中的代码。如果没有写default,且所有case都不匹配,那么switch语句不会执行任何操作。
表达式和case常量的要求
- switch后面的表达式结果必须是整型(int、short、long等)、字符型(char)或者枚举类型,不能是浮点型或者字符串。
- case后面的常量必须是编译期确定的常量,比如字面量、const修饰的常量,不能是变量或者运行时才能确定的表达式。
- 所有case后面的常量值不能重复,否则会编译报错。
常见使用误区
很多新手容易犯的错误包括:忘记写break导致逻辑错误、case后面写变量而不是常量、在switch内部定义变量却没有加作用域括号。如果在case分支中定义变量,需要用大括号包裹该分支的代码,避免作用域混乱:
#include <iostream>
using namespace std;
int main() {
int num = 2;
switch (num) {
case 1: {
int temp = 10;
cout << temp << endl;
break;
}
case 2: {
int temp = 20;
cout << temp << endl;
break;
}
default:
break;
}
return 0;
}
以上就是C++ switch语句的基础用法和常见注意事项,实际开发中可以根据场景灵活选择使用switch还是if else,当分支判断的条件是基于单个变量的固定值匹配时,switch是更优的选择。
C++_switchswitch语法switch_casebreak关键字修改时间:2026-06-18 00:27:17