跳转至

switch 语句

在实际编程中,先把 if 用好。

在一些考试中,switch 会出现在选择判断中,要能看懂。

基本语法

switch 适合根据同一个表达式的值,选择不同的分支。

比如,根据月份的值,判断季节。

switch (表达式) {
    case 值1:
        语句1;
        break;
    case 值2:
        语句2;
        break;
    case 值3:
        语句3;
        break;
    default:
        其他情况的语句;
        break;
}

匹配到哪个 case,就从那里开始执行。都不匹配,就执行 default。

default 可以不写。不写时,如果都不匹配,就不执行里面的语句。

判断奇偶

#include <iostream>

using namespace std;

int main() {
    int n;
    cin >> n;

    // 负奇数除以2的余数是-1,也要处理
    switch (n % 2) {
        case 1:
        case -1:
            cout << "odd";
            break;
        case 0:
            cout << "even";
            break;
    }

    return 0;
}

break,结束 switch

匹配到 case 后,不会自动停下来。

遇到 break,才会跳出当前的 switch;不写,就会继续往下执行,不会重新判断下一个 case 是否匹配。

int n = 1;
switch (n) {
    case 1:
        cout << 'A';
    case 2:
        cout << 'B';
        break;
    default:
        cout << 'C';
}

这里输出 AB。从 case 1 进入,接着执行 case 2 后面的语句,遇到 break 才结束。

多个 case 对应同一种情况

几个值要做同一件事,可以把 case 连着写,共用后面的代码。

根据月份判断季节

#include <iostream>
using namespace std;

int main() {
    int month;
    cin >> month;

    switch (month) {
        case 12:
        case 1:
        case 2:
            cout << "冬天";
            break;
        case 3:
        case 4:
        case 5:
            cout << "春天";
            break;
        case 6:
        case 7:
        case 8:
            cout << "夏天";
            break;
        case 9:
        case 10:
        case 11:
            cout << "秋天";
            break;
        default:
            cout << "输入错误";
            break;
    }

    return 0;
}

常见错误

case 后面写常量,不写判断条件

case 1:   // 正确
case 'A': // 正确,字符也可以

不能用 case x > 10: 表示“x大于10”。判断范围,用 if 更合适。

同一个 switch 中,case 的值不能重复。

case 后面是冒号,不是分号

case 1:  正确
case 1;  错误

别漏掉 break

除非有意让几个分支共用代码,否则每段代码写完,注意加上 break。

不是所有类型都能放进 switch

这里先用 int、char。不能直接用 double 或 string 做这样的分支选择。