switch语句的用法 switch语句case后面的范围怎么写


多路分支选择与case语句,实为if/else if/else的优雅变体。在switch语句中,default对应着if语句中的else部分。每个case都对应着汇编代码的标签,编译器则通过插入多条jmp语句来实现不同分支的跳转。

  • 在C/C++编程语言中,条件类型必须为整型、字符型或枚举型,字符串类型的条件是不被支持的。
  • 相较C/C++,C在支持条件类型上更为灵活,除了整型、字符型和枚举型,还支持字符串形式。而在Java 7中,switch语句的条件更是加入了字符串类型。
  • Python 3.10版本加入了match case语句,为多条件选择提供了支持。
  • Ada语言则采用case/when结构来实现多路分支。
  • Shell的case语句使用通配符进行模式测试,例如使用.txt可以匹配所有以.txt结尾的文本,这种灵活性是编译型语言所不能比拟的。Pattern还可以使用|符号进行多重匹配。
  • PHP作为一种脚本语言,其case参数可以是字符串。
  • Kotlin语言中虽然不再使用switch,但采用了when语句来替代,它提供了灵活的条件判断方式。

追溯历史,我们可以发现Algol 68是首个引入多重选择语句switch/case的编程语言之一,这一特性在之后的C/C++/Java/C等众多编程语言中得到了广泛的应用。

  • Fortran和Cobol等语言虽然起初没有引入switch/case结构,但它们后来在各自的版本中加入了类似的语句,如Fortran 77的select/case和Cobol 85的evaluate语句。
  • Ada语言的case语句支持一条语句中多个条件和范围的设定。
  • 标准C语言在case语句中不支持范围设定,但GNU C扩展了这一功能,允许我们使用如case 10...1000的写法来表示范围内的值。

在某些特定场合下,case语句的应用尤为出色。比如在使用格式化输出时,只需稍加调整case对应于不同的格式化标识符即可实现相同逻辑的不同输出。

  • C/C++因其近乎汇编的控制能力而闻名,对fall through的支持尤为自由。
  • 虽然Java也支持贯穿逻辑,但由于不支持goto语句,在某些处理逻辑上显得稍显局限。
  • 而C则以其独特的贯穿逻辑支持方式脱颖而出,通过使用goto语句显式指明跳转位置。