1. 引言
C++中的switch语句是一个常用的控制流程语句,它可以根据不同的条件跳转到不同的代码块中执行。switch语句的使用使代码更加简洁高效,switch可以替代一些if-else语句。
2. switch语句的基本用法
2.1 switch语句的语法格式
switch语句的语法格式如下:
switch(expression){
case constant-expression1:
statement(s);
break;
case constant-expression2:
statement(s);
break;
case constant-expression3:
statement(s);
break;
default:
statement(s);
}
其中,expression是需要进行比较的表达式,常用的数据类型包括int、char、枚举类型等,case后面的constant-expression为常量表达式或字面值,代表了比较的值。如果expression的值与某个case后的常量表达式或字面值相等,则执行对应的语句块statement(s),如果所有的case都不匹配,则执行default后的语句块。
2.2 switch语句的实例
下面是一个简单的switch语句实例,该程序接收用户输入的月份,返回对应的季节。
#include<iostream>
using namespace std;
int main(){
int month;
cout << "请输入月份:" << endl;
cin >> month;
switch(month){
case 3:
case 4:
case 5:
cout << "春季" << endl;
break;
case 6:
case 7:
case 8:
cout << "夏季" << endl;
break;
case 9:
case 10:
case 11:
cout << "秋季" << endl;
break;
case 12:
case 1:
case 2:
cout << "冬季" << endl;
break;
default:
cout << "月份输入错误!" << endl;
break;
}
return 0;
}
该程序中使用了switch语句根据用户输入的月份输出对应的季节,同时在最后加上了default部分来处理输入错误的情况。
3. switch的特殊用法
3.1 switch作为表达式
在C++11标准之后,switch语句可以用作表达式,如下所示:
int a = 3, b = 2;
int result = a < b ? 1 : (a == b ? 0 : -1);
switch(result){
case 1:
cout << "a < b" << endl;
break;
case 0:
cout << "a == b" << endl;
break;
case -1:
cout << "a > b" << endl;
break;
}
上述程序中,result是一个int类型的变量,根据三目运算符的结果赋不同的值,并使用switch语句输出对应的结果。
3.2 case穿透
在switch语句中,如果没有在case块中加上break语句,程序会继续执行下面的语句块,这种行为称为case穿透,如下所示:
int score = 80;
switch(score / 10){
case 10:
case 9:
cout << "A" << endl;
break;
case 8:
cout << "B" << endl;
break;
case 7:
cout << "C" << endl;
break;
case 6:
cout << "D" << endl;
break;
default:
cout << "E" << endl;
break;
}
上述程序中,将分数从100分到0分按照10分一个区间进行划分,如果score在90~100之间,则输出A,case块中没有break语句,所以score在80~89之间也会输出A。
4. 总结
switch语句是C++中的一个重要控制流程语句,它可以根据不同的条件跳转到不同的代码块中执行。正确地使用switch语句可以使程序更加高效简洁,同时还有一些特殊的用法,例如switch作为表达式和case穿透等。在使用switch语句时,也需要注意一些问题,例如尽量避免case穿透和正确地使用break语句等。