Z
ZHANK
控制流程

switch 语句

switch/case/default、fall-through 机制、范围 case

switch 语句

C++ 的 switch 用法和 C 一样,但 C++17 支持 [[fallthrough]] 属性来显式标注穿透意图。

学完本章你将: 掌握 switch 语法、fall-through 问题、范围 case。


基本语法

cpp
#include <iostream>

int main() {
    int day = 3;

    switch (day) {
        case 1:
            std::cout << "星期一\n";
            break;
        case 2:
            std::cout << "星期二\n";
            break;
        case 3:
            std::cout << "星期三\n";
            break;
        default:
            std::cout << "其他\n";
    }

    return 0;
}

fall-through 与 C++17 属性

cpp
switch (month) {
    case 12:
    case 1:
    case 2:
        std::cout << "冬天\n";
        break;
    case 3:
    case 4:
    case 5:
        std::cout << "春天\n";
        break;
}

// C++17: 如果有意 fall-through,用属性标注
switch (x) {
    case 1:
        doSomething();
        [[fallthrough]];  // 明确告知:"我是故意的"
    case 2:
        doOther();
        break;
}