查看: 3146|回复: 5

【高效c语言】(四)--switch与if的效率

[复制链接]
  • TA的每日心情
    无聊
    2016-12-20 15:08
  • 签到天数: 510 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2012-11-5 00:05:07 | 显示全部楼层 |阅读模式
    分享到:
    switch与if的区别

    如果纯粹比较数字或字符,建议使用switch,因为它只会在一开始的switch括号中取出变量值一次,然后将这个值与下面所设定的case比较,但如果使用if,每次遇到条件式时,都要取出变量值,效率的差异就在这儿。例如:

    if(a == 1)
        //...
    else if(a == 2)
        //...
    else if(a == 3)
        //...

    这个程序片段在最差的状况下,也就是a = 3时,共需3次比较,而每次比较都必须取出变量a的值一次。如果换成switch:

    switch(a)
    {
        case 1:
            //...
            break;
        case 2:
            //...
            break;
        case 3:
            //...
            break;
    }

    在这个程序片段中,只在开头switch的括号中取出变量a的值,然后逐一比较下面的case,效率的差别就在这儿。当然并不是使用if就不好,遇到复合条件时,switch就帮不上忙了,由于无法在switch中组合复杂的条件语句,这时就得使用if了。简单地说,if与switch两者可以搭配着灵活使用。

    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-10-14 03:09
  • 签到天数: 28 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2012-11-23 22:26:44 | 显示全部楼层
    谢谢分享!!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2013-1-7 19:18
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2012-12-9 17:33:11 | 显示全部楼层
    {:soso_e150:}还是 python 还有ruby 看起来舒服啊
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2013-2-22 15:40
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2013-2-22 17:07:56 | 显示全部楼层
    我也这么觉得
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2022-7-20 11:45
  • 签到天数: 1650 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2014-2-10 16:22:54 | 显示全部楼层
    谢谢分享!{:soso_e181:}
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2014-11-30 10:07
  • 签到天数: 170 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2014-5-23 18:44:54 | 显示全部楼层
    if else和switch之争,从软件到硬件
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-25 20:50 , Processed in 0.160163 second(s), 24 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.