【C++ 零基础入门】第6篇:switch 多条件选择

作者:咏方舟-长江支流   |   日期:2026-03-16

✅ 标准C++跨平台说明

本系列免费,敬请关注!所有代码均采用标准C++,不依赖任何平台特有API。今天学习的代码,今后可以直接运行在鸿蒙Native C++工程、Linux、macOS等任何支持标准C++的环境。VS2022/2026是我们高效的开发工具,但你的代码属于全平台。

🖥️ Windows VS2026📱 鸿蒙 DevEco🐧 Linux GCC🍎 macOS Clang

本节目标

  • 学会 switch 多条件选择
  • 掌握 case / break / default
  • 完成菜单选择案例

完整代码

#include <iostream>
using namespace std;

int main() {
    int choice;
    cout << "请选择功能(1-3):";
    cin >> choice;
    switch (choice) {
        case 1:
            cout << "执行功能1" << endl;
            break;
        case 2:
            cout << "执行功能2" << endl;
            break;
        case 3:
            cout << "执行功能3" << endl;
            break;
        default:
            cout << "输入错误" << endl;
            break;
    }
    //system("pause");
    return 0;
}

一、引言

当程序需要根据一个变量的多个可能值执行不同的操作时,使用上一节学的 if else if 可以实现,但代码会显得冗长。C++ 提供了更简洁、可读性更高的多分支选择语句——switch。它尤其适合处理“整数常量”或“字符常量”的多个固定选项。今天我们就来学习如何用 switch 打造一个简单的功能菜单。

二、从键盘输入数据

回顾之前学过的 cin,我们可以让用户输入一个整数来代表菜单选项。例如,在第5篇中我们用 if else 实现了成绩判断,但如果是并列的几个选项(比如1-3),用 switch 更清晰。先来看一个基本的输入例子:

int choice;
cout << "请选择功能(1-3):";
cin >> choice;

输入之后,我们需要根据 choice 的值执行不同的功能。如果用 if else 会写成这样:

if (choice == 1) {
    cout << "执行功能1" << endl;
} else if (choice == 2) {
    cout << "执行功能2" << endl;
} else if (choice == 3) {
    cout << "执行功能3" << endl;
} else {
    cout << "输入错误" << endl;
}

这段代码能工作,但 switch 提供了一种更优雅的写法,接下来我们就深入学习它。

三、switch 多条件选择详解

1. 基本语法

switch 语句的通用格式如下:

switch (表达式) {
    case 常量1:
        语句1;
        break;
    case 常量2:
        语句2;
        break;
    ...
    default:
        默认语句;
        break;
}

规则说明:

  • 表达式的值必须是整数类型(如 intcharenum),不能是浮点数或字符串。
  • case 后面跟一个常量表达式,与表达式的值比较。
  • 如果匹配某个 case,则执行该 case 下的语句,直到遇到 break 才跳出整个 switch;如果没有 break,会发生“穿透”(继续执行下一个case)。
  • default 是可选的,当没有任何 case 匹配时执行。

2. 菜单选择案例解析

回到开头的完整代码,我们逐部分解析:

1. 包含头文件与命名空间
#include <iostream>
using namespace std;

同上几篇,引入输入输出流。

2. 变量声明与输入
int choice;
cout << "请选择功能(1-3):";
cin >> choice;

声明一个整型变量 choice,并提示用户输入。

3. switch 分支
switch (choice) {
    case 1:
        cout << "执行功能1" << endl;
        break;
    case 2:
        cout << "执行功能2" << endl;
        break;
    case 3:
        cout << "执行功能3" << endl;
        break;
    default:
        cout << "输入错误" << endl;
        break;
}
  • 当 choice 等于 1 时,进入 case 1,输出“执行功能1”,然后 break 跳出。
  • 等于 2 或 3 同理。
  • 如果输入 1、2、3 以外的值(比如 5),则进入 default,输出“输入错误”。

⚠️ 注意:每个 case 末尾的 break 必不可少。如果忘记写 break,程序会继续执行下一个 case 中的代码,直到遇到 break 或 switch 结束,这种现象称为“穿透”。例如,若 case 1 后没有 break,当输入 1 时,程序会先输出“执行功能1”,然后继续执行 case 2 的代码(输出“执行功能2”),这不符预期。

4. 程序暂停与返回
//system("pause");
return 0;

作用同前,暂停程序查看结果并正常退出。

3. switch 的穿透特性

穿透有时也可以被利用。例如,如果希望多个 case 执行相同的代码,可以写成:

switch (score) {
    case 10:
    case 9:
        cout << "A" << endl;
        break;
    case 8:
    case 7:
        cout << "B" << endl;
        break;
    default:
        cout << "C" << endl;
}

当 score 为 10 或 9 时,都会输出“A”。这种利用穿透的方式可以让代码更简洁。

四、总结

本节我们学习了 switch 语句的基本用法、case 和 break 的作用、default 的使用以及穿透特性。与 if else 相比,switch 在处理多个固定值的分支时结构更清晰,执行效率也略高。但要注意,switch 只能用于整型常量的判断,无法处理范围或复杂条件。

思考题:假设我们要实现一个简单的计算器,用户输入两个整数和一个运算符(+、-、*、/),请尝试用 switch 完成运算(提示:运算符是字符类型,可以用 char 变量,switch 对字符同样有效)。欢迎在评论区分享你的代码!

❤️ 感谢您读到这里!

如果这篇文章或系列连载对您有所启发,欢迎点赞 👍分享↗️ 给更多需要的朋友。您的每一次互动爱心 ❤️ ,都是我持续深耕技术、分享干货的最大动力。关注我(公众号 金质打印通),学习实用技术,分享快乐!😊

💬 评论区聊聊:你曾经在 switch 中漏写 break 导致过奇怪的 bug 吗?或者有什么利用穿透的巧妙用法?

声明:本文作者 咏方舟-长江支流 相应内容版权归原作者所有,欢迎转载,请保留完整的内容及出处。

#金质打印通 #GoldPrinter #咏方舟长江支流 #零基础入门编程 #零基础到底层实战编程 #编程#VS2026 #switch #多条件选择

—— 每天进步一点点 ——

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐