c++ switch用法

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语句等。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签