Switch Case C++

2025年4月3日 | 阅读 7 分钟

在 C++ 中,**`switch 语句`** 是一种流程控制结构,它使我们能够根据给定表达式的值运行多个代码段。当我们需要在多种可能性之间做出决策时,它提供了一种复杂而有效的替代方案,可以替代一系列 if-else-if 语句。

C++ switch 语句从多个条件中执行一个语句。它看起来类似于 C++ 中的 if-else-if 梯形语句。

语法

它具有以下语法:

在这个语法中,

  • **Switch:** 它是语句的关键字。
  • **Expression:** 它表示用于评估每个 case 值的值。
  • **Default:** 如果没有匹配的 case,则执行 default case。
  • **Break:** `break` 关键字用于在匹配的 case 执行后中断语句。

C++ 中 Switch 语句的流程图

Cpp Switch 1

正如我们在流程图中看到的,使用以下步骤在 C++ 中实现 switch 语句

**步骤 1:** 在第一步中,评估 switch 表达式。

**步骤 2:** 之后,将评估的 case 值与已存在的 case 值进行匹配。

**步骤 3:** 在这里,检查 case 值。如果 case 值匹配,则执行该 case 块。如果 case 值不匹配,则执行 default case 块。

**步骤 4:** 之后,如果块中存在 break,则程序控制在执行该 case 后退出 switch 语句。如果块中不存在 break,则在匹配的 case 之后执行所有 case。

**步骤 5:** 最后,在 switch 语句之后执行语句。

C++ Switch 示例

让我们以一个简单的示例来说明 C++ 中的 switch 语句。

示例

编译并运行

输出

Enter a number:
10
It is 10

输出

Enter a number:
55
Not 10, 20 or 30

使用 C++ Switch 语句的计算器程序

让我们再写一个程序,使用 C++ 中的 switch 语句创建一个计算器。

示例

编译并运行

输出

Choose any operator (+, -, *, /): 
*
Enter the Number 1: 15
Enter the Number 2: 4
15 * 4 = 60

C++ 中 Switch 语句的规则

C++ 中使用了 switch 语句的几个规则。其中一些如下:

  • 在 C++ switch 语句中,程序的 case 值必须是 char 或 int 类型。
  • 它不允许 C++ 中存在重复的 case 值。
  • 它可以有多个 case。
  • 每个 case 语句都可以有一个 break 语句。它在 switch 语句中是可选的。
  • case 标签应后跟冒号 “:”。
  • switch 语句的 default 语句也是可选的。

C++ 中的嵌套 Switch Case

在 C++ 中,如果一个 switch case 包含在另一个 switch case 中,则称为 **`嵌套 switch case`**。它根据不同的条件实现多级决策。

语法

它具有以下语法:

C++ 嵌套 Switch Case 示例

让我们举一个例子来说明 C++ 中的嵌套 switch case。

示例

编译并运行

输出

Enter the College Year: 4
C++, Python, Machine Learning

C++ Switch 语句的穿透

在 C++ 中,switch 语句的穿透可能会导致意想不到的行为和细微的错误。当程序执行 case 语句从一个 case 块继续到下一个块而没有明确的 break 语句 时,就会发生这种情况。这意味着当匹配一个 case 语句时,所有后续的 case 块都将执行,直到遇到 break 语句。

C++ Switch 语句穿透示例

让我们举一个例子来说明 C++ 中的 switch 语句穿透。

示例

编译并运行

输出

Enter the Number: 1
C
C++
C#

Switch 语句的特点

C++ 中 switch 语句的几个特点如下:

  • 在 C++ 中,switch 语句比 if-else 更易于阅读和实现。
  • 它使程序易于维护和调试,从而提高执行性能。
  • 在 C++ 中,switch 语句的深度是固定的。它能够优化实现以加快代码执行。
  • switch 语句用于将 变量 的值与多个其他值进行比较。

Switch 语句的局限性

C++ 中 switch 语句的几个局限性如下:

  • 在 C++ 中,switch 语句不能直接与字符串变量和表达式一起使用。
  • 在 switch 语句中,变量或表达式不能用作 case 标签,因为每个 case 标签必须反映一个在编译时已知的常量值。
  • 它无法处理复杂的 case 条件或表达式。
  • 它不能直接比较非整型类型。
  • 它不能与 Goto 和跳转语句一起使用。

结论

总之,C++ switch 语句是一种灵活的构造,它使程序更容易处理各种情况。其明确的 case 标签和简洁的语法使代码更易于理解和维护,尤其是在存在多种可能结果的情况下。switch 语句通过提供 case 和操作之间的直接映射来改进程序逻辑的组织。

if-else-if 梯形结构相比,switch 语句在性能方面具有优势,因为编译器可以对其进行优化以实现更快的执行。开发人员应注意其限制,例如需要整型或枚举 表达式 类型和常量 case 值。


C++ Switch Case MCQ

1. 在 C++ Switch 语句中,case 关键字后使用以下哪个运算符?

  1. 分号 (;)
  2. 冒号 (:)
  3. 逗号 (,)
  4. 点 (.)

**答案:** (b) 冒号 (:)

2. 以下哪个选项对于 C++ 中的 switch 语句是正确的?

  1. C++ switch 语句中的 default case 是可选的。
  2. 在 switch case 中至少包含一个 case 值是强制性的。
  3. switch 语句中包含的 case 数量没有限制。
  4. 以上都不是。

**答案:** (a) C++ switch 语句中的 default case 是可选的。

3. C++ switch 语句中 default case 的用途是什么?

  1. 它用于终止 switch 语句。
  2. 它用于在任何 case 值都不匹配时执行代码。
  3. 它用于指定要执行的第一个 case。
  4. 它用于声明变量。

**答案:** (b) 它用于在任何 case 值都不匹配时执行代码。

4. C++ 中 switch 语句的主要目的是什么?

  1. 用于声明变量。
  2. 用于定义函数。
  3. 用于重复执行代码块。
  4. 用于根据表达式的值选择要执行的多个代码块之一。

**答案:** (d) 用于根据表达式的值选择要执行的多个代码块之一。

5. 以下哪个选项不是 C++ switch 语句中有效的 case 标签?

  1. case 2
  2. case 'b'
  3. case 2.7
  4. case 800

**答案:** (c) case 2.7


下一个主题C++ For 循环