什么值必须在switch语句中case后面

发布时间:2020-07-28 11:42:05

来源:亿速云

阅读:134

作者:Leah

什么值必须在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 是“开关”的意思,它也是一种“选择”语句,但它的用法非常简单。switch 是多分支选择语句。说得通俗点,多分支就是多个 if。

从功能上说,switch 语句和 if 语句完全可以相互取代。但从编程的角度,它们又各有各的特点,所以至今为止也不能说谁可以完全取代谁。

当嵌套的 if 比较少时(三个以内),用 if 编写程序会比较简洁。

但是当选择的分支比较多时,嵌套的 if 语句层数就会很多,导致程序冗长,可读性下降。

因此C语言提供 switch 语句来处理多分支选择。所以 if 和 switch 可以说是分工明确的。在很多大型的项目中,多分支选择的情况经常会遇到,所以 switch 语句用得还是比较多的。

关于什么值必须在switch语句中case后面问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

在c语言的switch 语句中,的case后面的表达式,什么值必须在switch语句中case后面相关推荐

  1. c语言 case常量表达式,在switch语句中,每一个case的常量表达式的值必须互不相同。()...

    值必不属特性真正质量的是以下于手机的. <安八十条规全生>第定产法,句中构成的犯罪,2万)万投资下的对个人经人处罚款营的元以元以上(,刑事追究责任够刑罚的依法尚不事处. 密集安部他特型的国 ...

  2. server sql 中类型为bit应该插入什么值_关于SQL Server中bit类型字段增删查改的一些事...

    前言 本文主要给大家介绍了关于SQL Server中bit类型字段增删查改的一些事,话说BIT类型字段之前,先看"诡异"的一幕,执行Update成功,但是查询出来的结果依然是1,而 ...

  3. 【python】小技巧-判断一个字典中是否包含另一个字典的值,即实际结果中是否包含预期结果

    在进行自动化测试的时候,我们经常会遇到这样一种情况. 我们的预期结果是 {'username':'kaishui'} 实际结果是{ 'code': 1 , 'username':'kaishui', ...

  4. C/C++ 语言中的表达式求值

    转载地址:http://www.cnblogs.com/heyonggang/p/3340301.html 在此,首先向裘老师致敬! 裘宗燕:C/C++ 语言中的表达式求值 经常可以在一些讨论组里看到 ...

  5. delphi switch语句例子_「GCTT 出品」Go 系列教程——10. switch 语句

    Go语言中文网,致力于每日分享编码知识,欢迎关注我,会有意想不到的收获! Go 系列教程是非常棒的一套初学者教程,入门就它了. 「GCTT 出品」Go 系列教程--1. 介绍与安装 「GCTT 出品」 ...

  6. 裘宗燕:C/C++ 语言中的表达式求值

    裘宗燕:C/C++ 语言中的表达式求值 经常可以在一些讨论组里看到下面的提问:"谁知道下面C语句给n赋什么值?" m = 1; n = m+++m++; 最近有位不相识的朋友发em ...

  7. C++基础知识:C++语言中的表达式求值

    经常可以在一些讨论组里看到下面的提问:"谁知道下面C语句给n赋什么值?" m = 1; n = m+++m++; 最近有位不相识的朋友发email给我,问为什么在某个C++系统里, ...

  8. 笔记整理1----Java语言基础(一)01 变量与数据类型+02 运算符与表达式+03 条件判断与循环语句+04 JAVA数组+05 函数与方法

    01 变量与数据类型+02 运算符与表达式+03 条件判断与循环语句+04 JAVA数组+05 函数与方法 第01天 java基础知识 今日内容介绍  Java概述.helloworld案例  工 ...

  9. expect switch 多条件_JavaScript-流程控制语句:选择结构(if和switch)

    代码块 用{}包围起来的代码,就是代码块. JS中的代码块,只具有分组的作用,没有其他的用途. 代码块中的内容,在外部是完全可见的.举例: { var a = 2; alert("qiang ...

  10. c语言求不定式的最大值,C语言之四则运算表达式求值(链栈)—支持浮点型数据,负数, 整型数据运算...

    运算符间的优先级关系: 链栈结构体定义: 数据域使用字符串长度为20的字符数组(故需要注意判断读取的字符串是运算符还是数值) 可支持浮点型数据,负数, 整型数据的运算 float EvaluateEx ...

最新文章

  1. pyspark性能调优参数
  2. 溢价 5 倍欲将 SiFive 收入麾下,英特尔的绝地反击战
  3. 全程pwm调光_dc调光的手机有哪些
  4. 同时更改一条数据_数据库中的引擎、事务、锁、MVCC(二)
  5. 数据中心的7个新兴发展趋势
  6. Mysql的事务事务的特征事务的隔离级别
  7. 【oracle】查看数据库最近执行了哪些sql语句
  8. Android如何获得当前应用显示的Activity
  9. 支持在iPad中播放的HTML5视频网站推荐
  10. Java swing 实现下拉框和文本框同步显示
  11. Android NDK调试出错Unknown Application ABI, Unable to detect application ABI#39;s的解决方式...
  12. JS密码校验规则前台验证(不能连续字符(如123、abc)连续3位或3位以上)(不能相同字符(如111、aaa)连续3位或3位以上)...
  13. 【Python-2.7】换行符和制表符
  14. python os path dirname_python中的os.path.dirname(__file__)的使用
  15. AcWing 902. 最短编辑距离(线性DP)
  16. PHP8.0环境详细安装教程
  17. 开启samba服务的设置步骤
  18. Python发送QQ邮件常见报错和代码
  19. 光驱刻录空盘提示函数不正确
  20. 时间开关的工作原理、安装方法及其应用特点

热门文章

  1. lempel ziv matlab,1.9 Lempel-Ziv算法
  2. 安装windows和android双系统,真正的安卓Windows双系统,RemixOS Windows共存系统安装+附带ROOT+大分区...
  3. C语言中关键字typedef、enum的使用
  4. 2022中国智慧医疗领域最具商业合作价值企业盘点
  5. matlab2016 dll,VS2012Matlab2016b dll文件混合编
  6. 无法打开https网页终极解决方法
  7. Step05:爬虫小项目,爬取最新电影迅雷下载地址
  8. 二、Linux文件操作命令
  9. HDU 6438 Buy and Resell (优先队列 or 贪心)
  10. 12月组队学习——JoyfulPandas第二章思维导图