switch-case语句小结

switch-case语句小结

参考网址:

http://mp.weixin.qq.com/s?__biz=MzI0NjYxMDQ4OQ==&mid=2247498189&idx=3&sn=57f4f64ed62b635de7ef0ee46849f148&chksm=e9be169bdec99f8de1fd16bbc3b61bd10e082895f69abbae6a374314d3e6e9efd698d9295135&mpshare=1&scene=23&srcid=1229J8Ycifm5oEEB3Ajs25Gv&sharer_sharetime=1609236657766&sharer_shareid=9d1e76e919cc0b2f3ca23ed1f5ef67a8#rd

1.示例代码

//打印出对应的i
void test(int i)
{
    switch(i)
    {
    case 1:
        printf("data is %d\n",i);
        break;
    case 2:
        printf("data is %d\n",i);
        //break;
    case 3:
        printf("data is %d\n",i);
        break;
  default:
    break;
  }
}

不说你也懂的,在case 2下面没有break,这与我们设计的初衷是不符的,那么switch有哪些缺乏呢,我们来总结一下

2.switch-case的缺点

语法正确,但是逻辑错误

写程序的时候忘记写break实在是再普通不过了,尤其是分类比较多的时候,因为从语法角度来说是正确的,所以比较容易忽视,可是代码的处理逻辑却是错误的!

死板的语法

switch对判断条件很严苛,case后面只能跟常量,其中的“表达式”的结果以及case后的“取值”只能是4种类型:byte、short、int和char,有些语言甚至只能用int类型作为判断条件,这种限制实在是太麻烦了。

这点解释说明一下,switch-case语句都可以转换成if-else

3.switch-case的优点

在很久以前,计算机科学家为了提高计算机的处理速度,把一些需要做逻辑判断的操作给固定死,然后只要查表就能做出相应的反应了。

比如说i=0的判断,switch在编译阶段将子函数的地址和判断条件绑定了,只要直接将a的直接映射到子函数地址去执行就可以了。

说明:

我认为能用sitch-case就用switch-case吧,因为脉络比if-else清晰好多,最简单的当然是三元运算了

4.注意事项

  1. switch的break语句是可选的,即没有break,程序会继续执行后面的代码。
  2. default语句也是可选的,相当于对应if-else语句最后的else。
  3. switch语句的比较是从上往下,所以把匹配概率大的选择因子放在前面可以提高效率。
  4. 选择因子(case后面的数据)具有唯一性,即不能有2个相同的因子存在。
  5. default语句不论放在哪个地方,它都是在没有匹配的情况下才会去执行,也就是说case无论在什么情况下都会比default先执行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值