switch...case...和if...else...区别

10 篇文章 0 订阅

switch 和 if 都是用来处理分支语句的,那么使用的时候,考虑到代码效率问题,就必须先来了解他们有什么区别。

先来看看这两个语句的使用格式:

  • if…else…
    if (表达式1)
    {
        语句1;
    }
    else if (表达式2)
    {
        语句2;
    }
    else if (表达式3)
    {
        语句3;
    }
    else if (表达式4)
    {
        语句4;
    }
    ...
    else
    {
        语句n+1;
    }

  • switch…case…
    switch (表达式)
    {
    case 值1:语句1;break;
    case 值2:语句2;break;
    case 值3:语句3;break;
    case 值4:语句4;break;
    case 值5:语句5;break;
    ...
    default:语句n+1;break;
    }

if语句每执行一次都要先判断条件表达式是true还是false,为true时执行相应语句,若为false则继续判断下一个表达式,直到最后一个else结束。线性执行。
switch语句只需在入口时计算表达式的值,然后查找跳转表,执行对应语句,否则default。类似二叉树。

区别一:

switch…case…只能用于case值为常量的分支结构,而if…else…更加灵活。

区别二:

if判断条件为逻辑表达式,可以是布尔类型的合法表达式、可以是常量、枚举等。而switch 通常处理算术表达式,或字符。

区别三:

switch 进行一次条件判断后直接执行到程序的条件语句。而if…else 有几种条件,就得判断多少次。

区别四:

相比if语句,switch语句是以空间换时间的分支结构。因为它要生成跳转表,所以占用较多的代码空间。当case常量分布范围很大但实际有效值又比较少的情况,switch…case的空间利用率将变得很低。

区别五

分支较多时,使用switch的效率高于if,除非第一个if条件就为真。

其次,当分支较多时,使用if…else…代码可读性不如switch…case…高。

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值