当前位置: 首页 > news >正文

不同语言的switch/case语句

多路分支选择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参数可以是字符串。

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++、Java、Kotlin、Android、iOS、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

欢迎关注。助您在编程路上越走越好!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【通讯协议】S32K142芯片——LIN通信的学习和配置
  • ActiveMQ 的消息持久化策略
  • K8s Calico替换为Cilium,以及安装Cilium过程
  • 解决Vue 3中Element Plus el-color-picker 组件消失的问题
  • 828华为云征文|华为云Flexus X实例docker部署最新Appsmith社区版,搭建自己的低代码平台
  • 浅显易懂的Git教程
  • 4.《DevOps》系列K8S部署CICD流水线之Helm部署Harbor私人镜像仓库
  • 阿里巴巴新推出Java版AI 应用开发框架-Spring AI Alibaba
  • 用Flowise+OneAPI+Ollama做一个在线翻译工作流
  • LLaMA-Factory 使用 alpaca 格式的数据集
  • Linux 常用命令 - more 【分页显示文件内容】
  • react + antDesign封装图片预览组件(支持多张图片)
  • 全面掌握大模型:从零基础到精通的终极指南,超详细教程手把手教会你,收藏我这一篇就够了
  • Java笔试面试题AI答之设计模式(5)
  • python gensim实现作者主题模型(Author-Topic Model)
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • Angular6错误 Service: No provider for Renderer2
  • AngularJS指令开发(1)——参数详解
  • CSS 提示工具(Tooltip)
  • gcc介绍及安装
  • magento 货币换算
  • MQ框架的比较
  • Python3爬取英雄联盟英雄皮肤大图
  • 闭包,sync使用细节
  • 翻译:Hystrix - How To Use
  • 今年的LC3大会没了?
  • 应用生命周期终极 DevOps 工具包
  • 阿里云移动端播放器高级功能介绍
  • 关于Android全面屏虚拟导航栏的适配总结
  • 浅谈sql中的in与not in,exists与not exists的区别
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • # 安徽锐锋科技IDMS系统简介
  • #70结构体案例1(导师,学生,成绩)
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (6)添加vue-cookie
  • (delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类的类构造函数)
  • (ibm)Java 语言的 XPath API
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (差分)胡桃爱原石
  • (二)JAVA使用POI操作excel
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (附源码)计算机毕业设计高校学生选课系统
  • (力扣)循环队列的实现与详解(C语言)
  • (十五)、把自己的镜像推送到 DockerHub
  • (原)Matlab的svmtrain和svmclassify
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .net core 控制台应用程序读取配置文件app.config
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • :=
  • [ HTML + CSS + Javascript ] 复盘尝试制作 2048 小游戏时遇到的问题