请教个C问题

[复制链接]
2684|17
 楼主| forsuccess 发表于 2007-8-28 18:03 | 显示全部楼层 |阅读模式
如果程序中有多重判断,用if else 还是case效率高呢?或者两者效率一样呢?
glkos 发表于 2007-8-28 20:47 | 显示全部楼层

多重判断

case  的效率高
 楼主| forsuccess 发表于 2007-8-28 20:54 | 显示全部楼层

为什么呢

我从程序执行流程来看,好像看不出差别来啊?
HWM 发表于 2007-8-28 21:01 | 显示全部楼层

两者所适应的判断对象不同。

条件语句(if else )适合与布尔量的判别,而散转语句(switch case..case )则更适应与序数(或离散量)的判别处理。
 楼主| forsuccess 发表于 2007-8-28 23:50 | 显示全部楼层

那我不按上面说的做呢

if (a==1){}
else if (a==2){}
else if(a==3){}
else if(a==4){}
else a==5

switch(a)

case 1:
   ...
case 2
  ...
...
case 5

实际程序都是出现第五种情况,那么两者那个效率高呢,我觉得一样啊。。。。。。
希望能赐教。
HWM 发表于 2007-8-29 07:54 | 显示全部楼层

LZ:如果从逻辑上已经确定只能是第五种情况,

那还不如直接执行它算了,何必多此一举呢。
 楼主| forsuccess 发表于 2007-8-29 08:09 | 显示全部楼层

***

我的意思是说假如某一次是第5种情况,而在该情况下,这次的执行效率谁高?而不是整体的分析多种情况下谁的效率高的。。。。。。
HWM 发表于 2007-8-29 08:16 | 显示全部楼层

LZ:这两种语句的编译结果是一般是不一样的。

条件语句一般对应于条件转移指令,而散转语句则一般对应于散转指令。
一般用一条散转指令就可以完成散转语句的功能。
王喜 发表于 2007-8-30 11:22 | 显示全部楼层

&&&

从程序角度上考虑的话,case 效率要高一些!
 楼主| forsuccess 发表于 2007-8-30 11:27 | 显示全部楼层

(@_@)

楼上的能否详细讲讲如何从“程序”角度来考虑?
农民讲习所 发表于 2007-8-30 12:06 | 显示全部楼层

case可以被优化为if,反过来不行

 楼主| forsuccess 发表于 2007-8-30 14:35 | 显示全部楼层

~_~

所长的意思我能不能理解为 使用if else比使用case的效率高呢???
dudongdao 发表于 2007-8-30 15:03 | 显示全部楼层

自己看汇编吧~~

   所有 C编译器都能产生一个LST文件,你可以在那里面看到你的没一行C代码是怎么转化成汇编的,那样你就知道辣~
wy3168 发表于 2007-8-30 17:07 | 显示全部楼层

C51中不建议使用case

农民讲习所 发表于 2007-8-30 17:11 | 显示全部楼层

这样说:

小数两者效率是一样的,大数CASE高。所以尽量使用CASE
HWM 发表于 2007-8-30 17:23 | 显示全部楼层

再来一个“没听说过”

没听所过“case可以被优化为if,反过来不行”,更没听说“C51中不建议使用case”。

两种语句具有完全不同的应用,一个针对与布尔量,一个针对于序数变量。
ayb_ice 发表于 2007-8-30 18:12 | 显示全部楼层

"C51中不建议使用case"

不知是哪位高手建议的。。。
dudongdao 发表于 2007-8-31 14:54 | 显示全部楼层

从原理上去看吧

   兄弟们,我们看汇编,看了就知道了,还争论那么多干什么,有什么用呢,都是听别人说,自己看看汇编就什么都知道了,适合所有编译器,效率的问题直接和编译器相关的,我也看过C51中能用IF 的不用CASE,这是编译器的限制.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

70

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部