在c语言的switch 语句中,的case后面的表达式,什么值必须在switch语句中case后面
什么值必须在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后面相关推荐
- c语言 case常量表达式,在switch语句中,每一个case的常量表达式的值必须互不相同。()...
值必不属特性真正质量的是以下于手机的. <安八十条规全生>第定产法,句中构成的犯罪,2万)万投资下的对个人经人处罚款营的元以元以上(,刑事追究责任够刑罚的依法尚不事处. 密集安部他特型的国 ...
- server sql 中类型为bit应该插入什么值_关于SQL Server中bit类型字段增删查改的一些事...
前言 本文主要给大家介绍了关于SQL Server中bit类型字段增删查改的一些事,话说BIT类型字段之前,先看"诡异"的一幕,执行Update成功,但是查询出来的结果依然是1,而 ...
- 【python】小技巧-判断一个字典中是否包含另一个字典的值,即实际结果中是否包含预期结果
在进行自动化测试的时候,我们经常会遇到这样一种情况. 我们的预期结果是 {'username':'kaishui'} 实际结果是{ 'code': 1 , 'username':'kaishui', ...
- C/C++ 语言中的表达式求值
转载地址:http://www.cnblogs.com/heyonggang/p/3340301.html 在此,首先向裘老师致敬! 裘宗燕:C/C++ 语言中的表达式求值 经常可以在一些讨论组里看到 ...
- delphi switch语句例子_「GCTT 出品」Go 系列教程——10. switch 语句
Go语言中文网,致力于每日分享编码知识,欢迎关注我,会有意想不到的收获! Go 系列教程是非常棒的一套初学者教程,入门就它了. 「GCTT 出品」Go 系列教程--1. 介绍与安装 「GCTT 出品」 ...
- 裘宗燕:C/C++ 语言中的表达式求值
裘宗燕:C/C++ 语言中的表达式求值 经常可以在一些讨论组里看到下面的提问:"谁知道下面C语句给n赋什么值?" m = 1; n = m+++m++; 最近有位不相识的朋友发em ...
- C++基础知识:C++语言中的表达式求值
经常可以在一些讨论组里看到下面的提问:"谁知道下面C语句给n赋什么值?" m = 1; n = m+++m++; 最近有位不相识的朋友发email给我,问为什么在某个C++系统里, ...
- 笔记整理1----Java语言基础(一)01 变量与数据类型+02 运算符与表达式+03 条件判断与循环语句+04 JAVA数组+05 函数与方法
01 变量与数据类型+02 运算符与表达式+03 条件判断与循环语句+04 JAVA数组+05 函数与方法 第01天 java基础知识 今日内容介绍 Java概述.helloworld案例 工 ...
- expect switch 多条件_JavaScript-流程控制语句:选择结构(if和switch)
代码块 用{}包围起来的代码,就是代码块. JS中的代码块,只具有分组的作用,没有其他的用途. 代码块中的内容,在外部是完全可见的.举例: { var a = 2; alert("qiang ...
- c语言求不定式的最大值,C语言之四则运算表达式求值(链栈)—支持浮点型数据,负数, 整型数据运算...
运算符间的优先级关系: 链栈结构体定义: 数据域使用字符串长度为20的字符数组(故需要注意判断读取的字符串是运算符还是数值) 可支持浮点型数据,负数, 整型数据的运算 float EvaluateEx ...
最新文章
- pyspark性能调优参数
- 溢价 5 倍欲将 SiFive 收入麾下,英特尔的绝地反击战
- 全程pwm调光_dc调光的手机有哪些
- 同时更改一条数据_数据库中的引擎、事务、锁、MVCC(二)
- 数据中心的7个新兴发展趋势
- Mysql的事务事务的特征事务的隔离级别
- 【oracle】查看数据库最近执行了哪些sql语句
- Android如何获得当前应用显示的Activity
- 支持在iPad中播放的HTML5视频网站推荐
- Java swing 实现下拉框和文本框同步显示
- Android NDK调试出错Unknown Application ABI, Unable to detect application ABI#39;s的解决方式...
- JS密码校验规则前台验证(不能连续字符(如123、abc)连续3位或3位以上)(不能相同字符(如111、aaa)连续3位或3位以上)...
- 【Python-2.7】换行符和制表符
- python os path dirname_python中的os.path.dirname(__file__)的使用
- AcWing 902. 最短编辑距离(线性DP)
- PHP8.0环境详细安装教程
- 开启samba服务的设置步骤
- Python发送QQ邮件常见报错和代码
- 光驱刻录空盘提示函数不正确
- 时间开关的工作原理、安装方法及其应用特点
热门文章
- lempel ziv matlab,1.9 Lempel-Ziv算法
- 安装windows和android双系统,真正的安卓Windows双系统,RemixOS Windows共存系统安装+附带ROOT+大分区...
- C语言中关键字typedef、enum的使用
- 2022中国智慧医疗领域最具商业合作价值企业盘点
- matlab2016 dll,VS2012Matlab2016b dll文件混合编
- 无法打开https网页终极解决方法
- Step05:爬虫小项目,爬取最新电影迅雷下载地址
- 二、Linux文件操作命令
- HDU 6438 Buy and Resell (优先队列 or 贪心)
- 12月组队学习——JoyfulPandas第二章思维导图