switch语句中case后面的值必须是什么?


本文摘自PHP中文网,作者烟雨青岚,侵删。

switch语句中case后面的值必须是常量。因为switch语句中,会根据case标签后面的常量值,生成跳转表,只经过少数次数的比较,就可以跳到对应标签下面;如果允许变量,switch对于一个数据也只能从头到尾地进行比较,这就失去了意义。

switch语句中case后面的值必须是常量。

因为C语言中的 switch 不是 if 的替代品。

编译时会对 switch 进行优化,根据 case 标签后面的常量值,生成跳转表,只经过少数次数的比较,就可以跳到对应标签下面。

所以,标签也是不能重复的。如果允许变量,switch 只能退化成跟一连串的 if else, 对于一个数据也只能从头到尾地进行比较,也就失去了 switch 的意义。

跳转表和逐个比较,这两种方式的复杂度差很多。

这也是 python 没有引入和 C 语言里面的 switch case 相对应的控制结构的一个原因。

一般表达式:

阅读剩余部分

相关阅读 >>

c中scanf()和gets()之间的区别

c语言中==和=的区别

c语言字符常量的合法表示形式是什么

新手程序员应该知道的c语言和c++的区别

c语言的四大数据类型是什么?

c语言程序总是从第一个定义的函数开始执行吗?

c语言switch case语句怎么用

c语言是一种具有低级语言特点的什么语言

几款好用的c语言编译器推荐

c语言中continue作用是什么?

更多相关阅读请进入《switch》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...