C++ 中的 switch
语句用法详解
在C++中,switch
语句是一个多分支选择结构,用于基于表达式的值从多个可能的执行路径中选择一个执行。switch
语句与if-else if-else
语句在功能上有相似之处,但在某些情况下,使用switch
语句可以使代码更加清晰和易于维护。
1. 基本语法
switch
语句的基本语法如下:
Plain Textswitch (expression) {
case constant1:
// 代码块
break;
case constant2:
// 代码块
break;
// 可以有更多的 case
default:
// 如果上面的 case 都不匹配,执行这里的代码
}
expression
:是一个表达式,其结果必须是一个整数(包括字符和枚举值,因为它们在C++中也是整数)或可以转换为整数的类型。case
:后面跟着一个常量表达式,它与switch
表达式的结果进行比较。break
:是可选的。如果省略了break
,程序会继续执行下一个case
,直到遇到break
或switch
块的末尾。这种行为被称为“穿透”或“瀑布效应”。default
:也是可选的,它定义了当switch
表达式的结果不匹配任何case
标签时要执行的代码。
2. 示例
下面是一个简单的示例,演示了如何使用switch
语句:
Plain Text#include <iostream>
int main() {
int day = 3; // 假设 day 是星期几(1=周一,2=周二,...,7=周日)
switch (day) {
case 1:
std::cout << "Monday";
break;
case 2:
std::cout << "Tuesday";
break;
case 3:
std::cout << "Wednesday";
break;
case 4:
std::cout << "Thursday";
break;
case 5:
std::cout << "Friday";
break;
case 6:
std::cout << "Saturday";
break;
case 7:
std::cout << "Sunday";
break;
default:
std::cout << "Invalid day";
}
std::cout << std::endl;
return 0;
}
3. 注意事项
- 每一个
case
后面通常都跟着一个break
语句,以防止“穿透”现象。但是,在某些特殊情况下,可能需要利用这种“穿透”现象来执行多个连续的case
代码块。 default
标签是可选的,但通常建议包含它,以处理未预期的情况。switch
语句只能用于整数类型(包括字符和枚举值)的表达式。对于其他类型的表达式(如浮点数或字符串),应该使用其他控制结构,如if-else if-else
语句。- 如果
switch
表达式的值不在任何case
标签的范围内,并且没有default
标签,则不会执行任何case
代码块。