这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » switch与if的区别(转)

共7条 1/1 1 跳转至

switch与if的区别(转)

高工
2009-08-11 23:17:19     打赏

                                                                       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两者可以搭配着灵活使用。




关键词: switch     区别    

菜鸟
2009-09-17 15:03:02     打赏
2楼
ding

菜鸟
2009-09-23 09:18:50     打赏
3楼
if 语句有优先级!

高工
2009-09-23 12:14:26     打赏
4楼
C语言中,Switch也是有优先级的,写在前面的优先级高,当然要有break;Verilog中就没有了。

菜鸟
2009-10-23 11:24:31     打赏
5楼
我一般是分支少(小于3个)用if,多了就switch.

菜鸟
2009-12-18 09:40:48     打赏
6楼

Agree.


菜鸟
2009-12-18 12:51:25     打赏
7楼

不错


共7条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]