2.3 switch 语句
当你需要根据一个整数、字符或枚举值进行多路分支时,一长串 else if 会显得啰嗦。switch 可以让结构更清楚。
cpp
switch (op) {
case '+':
std::cout << a + b << std::endl;
break;
case '-':
std::cout << a - b << std::endl;
break;
default:
std::cout << "Unsupported" << std::endl;
break;
}switch 会把括号里的值和每个 case 进行匹配。一旦某个 case 匹配成功,就从那里开始执行。
注意
switch 适用于 int、char、enum 等整型或枚举类型;不能直接用于 double 或 std::string。break 与 fall-through
break 用来跳出 switch。如果忘记写 break,执行会继续进入后面的 case,这种行为叫 fall-through。
有时可以故意利用 fall-through,让多个情况共享同一段代码:
cpp
switch (grade) {
case 'A':
case 'B':
std::cout << "Pass" << std::endl;
break;
case 'C':
std::cout << "Just pass" << std::endl;
break;
default:
std::cout << "Fail" << std::endl;
break;
}这里 'A' 和 'B' 共享一个输出,因为 'A' 后面没有 break,会继续落到 'B'。不过大多数时候,漏写 break 都是 bug,所以要小心。
default
default 处理所有没有匹配到的情况,类似于 if-else if-else 中的 else。建议总是写上 default,哪怕只是输出一条提示,这样程序在遇到意外输入时也能有明确行为。
正在加载交互实验...
正在加载概念检查...
正在加载本节练习...