switch语句中case后面的值必须是唯一的整型常量或枚举常量吗?

2026-04-18 16:101阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计694个文字,预计阅读时间需要3分钟。

switch语句中case后面的值必须是唯一的整型常量或枚举常量吗?

在`switch`语句中,`case`后面的值必须是常量。因为`switch`语句会根据`case`标签后的常量值生成跳转表,通过少量比较即可定位到对应的标签;如果允许变量,则需要比较所有可能的值,效率会大大降低。

switch语句中case后面的值必须是常量。因为switch语句中,会根据case标签后面的常量值,生成跳转表,只经过少数次数的比较,就可以跳到对应标签下面;如果允许变量,switch对于一个数据也只能从头到尾地进行比较,这就失去了意义。

switch语句中case后面的值必须是常量。

因为C语言中的 switch 不是 if 的替代品。

编译时会对 switch 进行优化,根据 case 标签后面的常量值,生成跳转表,只经过少数次数的比较,就可以跳到对应标签下面。

所以,标签也是不能重复的。如果允许变量,switch 只能退化成跟一连串的 if else, 对于一个数据也只能从头到尾地进行比较,也就失去了 switch 的意义。

跳转表和逐个比较,这两种方式的复杂度差很多。

这也是 python 没有引入和 C 语言里面的 switch case 相对应的控制结构的一个原因。

一般表达式:

switch (表达式) { case 常量表达式1: 语句1 case 常量表达式2: 语句2 ┇ case 常量表达式n: 语句n default: 语句n+1 }

switch 是“开关”的意思,它也是一种“选择”语句,但它的用法非常简单。

阅读全文

本文共计694个文字,预计阅读时间需要3分钟。

switch语句中case后面的值必须是唯一的整型常量或枚举常量吗?

在`switch`语句中,`case`后面的值必须是常量。因为`switch`语句会根据`case`标签后的常量值生成跳转表,通过少量比较即可定位到对应的标签;如果允许变量,则需要比较所有可能的值,效率会大大降低。

switch语句中case后面的值必须是常量。因为switch语句中,会根据case标签后面的常量值,生成跳转表,只经过少数次数的比较,就可以跳到对应标签下面;如果允许变量,switch对于一个数据也只能从头到尾地进行比较,这就失去了意义。

switch语句中case后面的值必须是常量。

因为C语言中的 switch 不是 if 的替代品。

编译时会对 switch 进行优化,根据 case 标签后面的常量值,生成跳转表,只经过少数次数的比较,就可以跳到对应标签下面。

所以,标签也是不能重复的。如果允许变量,switch 只能退化成跟一连串的 if else, 对于一个数据也只能从头到尾地进行比较,也就失去了 switch 的意义。

跳转表和逐个比较,这两种方式的复杂度差很多。

这也是 python 没有引入和 C 语言里面的 switch case 相对应的控制结构的一个原因。

一般表达式:

switch (表达式) { case 常量表达式1: 语句1 case 常量表达式2: 语句2 ┇ case 常量表达式n: 语句n default: 语句n+1 }

switch 是“开关”的意思,它也是一种“选择”语句,但它的用法非常简单。

阅读全文