网站首页 > 教程分享 正文
多路分支选择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等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。
猜你喜欢
- 2024-12-26 Kali与编程:shell编程之case语句 case shell语句
- 2024-12-26 kettle的switch/case,没有起到分流作用,所有的分支都执行了
- 2024-12-26 C#-选择(分支)结构 switch-case 029
- 2024-12-26 if-else 和 switch-case 哪个效率更高?
- 2024-12-26 Java switch case语句详解 java switch case default
- 2024-12-26 用C++实现switch和case的讲解,面向对象编程由此开始(第六节)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- css导航条 (66)
- sqlinsert (63)
- js提交表单 (60)
- param (62)
- parentelement (65)
- jquery分享 (62)
- check约束 (64)
- curl_init (68)
- sql if语句 (69)
- import (66)
- chmod文件夹 (71)
- clearinterval (71)
- pythonrange (62)
- 数组长度 (61)
- javafx (59)
- 全局消息钩子 (64)
- sort排序 (62)
- jdbc (69)
- php网页源码 (59)
- assert h (69)
- httpclientjar (60)
- postgresql conf (59)
- winform开发 (59)
- mysql数字类型 (71)
- drawimage (61)
本文暂时没有评论,来添加一个吧(●'◡'●)