Switch Case 语句

2024年10月29日 | 12 分钟阅读

Switch case 是一种控制语句,用于实现决策逻辑。它由作为独立决策分支的多个 case 组成。它是具有大量条件和缓存内存问题的 if 语句的更好替代品。

C Switch Case 语句

为了创建 switch case,C 语言提供了 switch、case 和 default 关键字。switch 的语法如下所示。

C/C++/Java/C#/Javascript Switch Case 语句语法

注意事项

  • Switch case 仅允许在 case 表达式中使用整数和字符常量。我们不能使用浮点值。
  • 仅当输入值匹配时才执行 case,否则执行 default case。
  • Break 关键字可用于中断控制并将控制从 switch 中取出。它是可选的,如果不使用,控制将转移到下一个 case。
  • Switch case 在开发菜单驱动的应用程序时非常有用。
  • Switch case 不能有变量表达式,例如 (a+2*b+3)。
  • 不允许有重复的 case 表达式。

Java Switch Case 语句

Java switch 与 C 语言 switch 语句类似,并提供相同的功能。在 Java 中,switch 表达式可以是 byte、short、int、char、String 和 Enum 类型。

switch 表达式的类型必须与 case 的类型匹配,否则会生成错误。


Ruby Switch Case 语句

Ruby 中的 switch case 具有不同的标识符和声明语法。使用 case 关键字代替 switch,使用 when 代替 case,使用 else 代替 default。

Ruby 使用 === 运算符来匹配 case 和 when 表达式。如果没有任何 when 匹配,则执行 Else 表达式。

使用 === 运算符比较 case 指定的表达式和 when 指定的表达式,并执行匹配的 when 子句的代码。

Ruby Switch Case 语法


Rust Switch Case 语句(模式匹配)

Rust 不支持 C 风格的 switch case,但具有更好的替代匹配表达式。匹配表达式是一个基于模式匹配的概念,并且具有用于匹配表达式的分支。

它遵循 value => expression 语法,并且匹配表达式匹配每个值并执行相应的表达式。 语法如下所示。

Rust 模式匹配语法

我们可以直接与文字进行匹配,并且 _ 充当“任何”case。


Swift Switch Case 语句

Swift 的 switch 语句被认为比 C 类型 switch case 更强大。 它用于匹配各种类型的 case,包括范围、元组等。

在 swift 中,switch case 不会穿透到较低的 case。 switch case 的语法如下所示。

Swift Switch Case 语法

让我们看一个 switch case 示例,该示例打印我们传递的数字的名称。


C Switch Case 示例 1:整数输入

输出

Two

上面的示例根据输入打印 Two,并且由于 break,它会停止进一步的执行并退出 switch 块。


Java Switch Case 示例 1:整数输入

输出

Two

Ruby Switch Case 示例:整数输入

输出

Two

C# Switch Case 示例:整数输入

输出

Two

Php Switch Case 示例:整数输入

输出

Two

Rust Switch Case 示例:整数输入

输出

Two

Javascript Switch Case 示例:整数输入

输出

Two

Swift Switch Case 示例:整数输入


C Switch Case 示例:整数表达式

它允许我们将整数表达式与 case 一起使用。请参见以下示例。

输出

Three

Java Switch Case 示例:整数表达式

输出

Three

Ruby Switch Case 示例:整数表达式

输出

Three

C# Switch Case 示例:整数表达式


Php Switch Case 示例:整数表达式

输出

Three

Rust Switch Case:整数表达式

Rust 不允许将整数表达式放入匹配表达式中。 因此,应用 1+2 或 a+3 等会在代码中生成错误。

Rust Switch Case:整数表达式

输出

Three

Swift Switch Case:整数表达式


C Switch Case 示例:字符常量

Switch case 同时支持整数或字符常量。 字符由其 ascii 值替换。

注意:C 编译器隐式地将字符常量替换为其 ASCII 值,'a' => 97。

输出

It's a

Java Switch Case 示例:字符常量

Switch case 同时支持整数或字符常量。 字符由其 ascii 值替换。

注意:Java 隐式地将字符常量替换为其 ASCII 值,'a' => 97。

输出

It's a

Ruby Switch Case 示例:字符常量

输出

It's a

C# Switch Case 示例:字符常量

输出

It's a

PHP Switch Case 示例:字符常量

输出

It's a

Rust Switch Case 示例:字符常量

输出

It's a

Javascript Switch Case 示例:字符常量

输出

It's a

Swift 匹配单个字符的示例

输出

It's a

C Switch Case 示例:没有 Break

输出

Two 
Three 
value is other than 1, 2, 3

请参见上面的示例,传递了一个整数输入,该输入与 case 2 匹配,不仅执行了该 case,还执行了该 case 之后的所有其他 case,包括 default。

这意味着在没有 break 的情况下,它还会执行其他 case,直到到达 switch 的末尾或找到 break 为止。


Java Switch Case 示例:没有 Break

输出

Two
Three
value is other than 1, 2, 3

Ruby Switch Case 示例:Break

Ruby 不使用 break 语句,并且在 switch case 中使用隐式 break,不需要添加额外的 break。


C# Switch Case 示例:Break

C# 不允许从一个 case 隐式地穿透到另一个 case。 我们可以显式地放置 break,或者 C# 使用隐式 break 来防止从一个 case 自动穿透到另一个 case。

如果我们不放置 break 并编译代码,则 C# 会报告一个错误

错误:控制无法从一个 case 标签穿透到另一个 case 标签。


PHP Switch Case 示例:没有 Break

在没有 break 的情况下,它将穿透所有 case,直到 switch 完成或找到 break 为止。

输出

It's a
It's b
It's c
value is other than a, b, c

Javascript Switch Case 示例:没有 Break

它将穿透到最后一个 case 或直到找到 break 为止。它将执行匹配的 case 之后的所有 case。请参见下面的示例。

输出

It's a
It's b
It's c
value is other than a, b, c

Swift Switch Case 示例:没有 Break

即使删除了 break 语句,它也不会穿透。这意味着 swift 不允许 case 穿透到 switch 中的较低位置。


有时我们想为多个 case 执行通用语句。请参见以下示例。


C Switch Case 语句示例:通用语句

输出

It's a

将多个 case 组合在一起以执行通用任务。无论输入是 'a' 还是 'A',它都会打印相同的消息(执行通用语句)。


Java Switch Case 示例:通用语句

输出

It's a

Ruby Switch Case 示例:通用语句

Ruby 在这种情况下不起作用,因为它会隐式地中断每个 when,并将控制从 case 中取出。


C# Switch Case 示例:通用语句

输出

It's a

Php Switch Case 示例:通用语句

输出

It's a

Rust Switch Case 示例:通用语句

使用 | (或) 运算符可以非常容易地执行通用语句或多个模式。

输出

It's a

Javascript Switch Case 示例:通用语句


Swift Switch Case 示例:通用语句

它要求 case 中至少有一个可执行语句,否则会抛出错误消息。请参见以下示例。

输出

error: 'case' label in a 'switch' should have at least one executable statement.

为了实现这一点,Swift 提供了一个新概念,即使用 , (逗号) 来提供多个 case。请参见以下示例。

输出

It's a

Java Switch Case 示例:字符串输入

输出

Sunday

Ruby Switch Case 示例:字符串输入

输出

Sunday

C# Switch Case 示例:字符串输入

输出

Sunday

Php Switch Case 示例:字符串输入


Rust Switch Case 示例:字符串输入

输出

Sunday

Javascript Switch Case 示例:字符串输入

输出

Sunday

Swift Switch Case 示例:字符串输入

输出

Sunday

Ruby Switch Case 示例:输入范围

When 表达式以范围形式给出,并且在指定范围内匹配输入并执行代码。请参见以下示例。

输出

little child

Rust Switch Case 示例:输入范围

模式值可以位于该范围内,并匹配以评估表达式。

输出

little child

c, c++, java, c#, ruby, php, rust, javascript, python, swift