switch/case语句

switch/case语句多路分支选择 switch case 是 if else if else 的好看版本 switch 中 default 语句对应 if 的 else 语句 每个 case 对应汇编代码的 label 编译器插入多条 jmp 语句实现不同分支跳转 条件类型 C C 条件类

大家好,欢迎来到IT知识分享网。

多路分支选择switch/case是if/else if/else的好看版本,switch中default语句对应if的else语句。每个case对应汇编代码的label, 编译器插入多条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 用when代替以往的switch,例如:
    when (a) {
    1 -> println(“a is 1”)
    2 -> println(“a is 2”)
    else -> println(“a is not 1, 2”)
    }
    when (a) {
    1, 2 -> println(“a is 1 or 2”)
    else -> println(“a is not 1, 2”)
    }
    when {
    a == 1 -> println(“a is 1”)
    a == 2 -> println(“a is 2”)
    else -> println(“a is not 1, 2”)
    }

switch结构起源

  • 最早Algol 68引入了多重选择语句switch/case, 为后续大部分编程语言所用,比如C/C++/Java/C#.
  • Fortran最早没有,在Fortran 77版本引入了类似的select/case语句。
  • Cobol 85引入了evaluate语句,类似于switch/case.
  • Ada支持case一条语句多条件和范围设定,形如when 1 | 2 | 10 .. 15表示为1或2或10~15的范围。
  • 标准C语言不支持case语句范围,GNU C扩展了此功能,示例:case 10 … 1000: 表示在10到100范围内。

Fall Through

case贯穿在某些时候特别有效,比如libc %i用%d同一套输出逻辑,仅仅将%i的case和%d地方一起即可。

  • C/C++有着近乎汇编的控制能力, 对fall through的支持最自由。
  • Java也支持贯穿,因不支持goto对于某些处理逻辑不那么灵活。
  • C#更有意思,支持贯穿,但必须用goto语句显式指明跳转哪里。

若文章对您有帮助,欢迎关注 程序员小迷 。助您在编程路上越走越好!

微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是 程序员小迷 (致力于C、C++、C#、Android、iOS、Java、Kotlin、Objective-C、Swift、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/169075.html

(0)
上一篇 2025-01-29 09:05
下一篇 2025-01-29 09:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信