打印

请教个C问题

[复制链接]
1323|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
forsuccess|  楼主 | 2007-8-28 18:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
glkos| | 2007-8-28 20:47 | 只看该作者

多重判断

case  的效率高

使用特权

评论回复
板凳
forsuccess|  楼主 | 2007-8-28 20:54 | 只看该作者

为什么呢

我从程序执行流程来看,好像看不出差别来啊?

使用特权

评论回复
地板
HWM| | 2007-8-28 21:01 | 只看该作者

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

条件语句(if else )适合与布尔量的判别,而散转语句(switch case..case )则更适应与序数(或离散量)的判别处理。

使用特权

评论回复
5
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

实际程序都是出现第五种情况,那么两者那个效率高呢,我觉得一样啊。。。。。。
希望能赐教。

使用特权

评论回复
6
HWM| | 2007-8-29 07:54 | 只看该作者

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

那还不如直接执行它算了,何必多此一举呢。

使用特权

评论回复
7
forsuccess|  楼主 | 2007-8-29 08:09 | 只看该作者

***

我的意思是说假如某一次是第5种情况,而在该情况下,这次的执行效率谁高?而不是整体的分析多种情况下谁的效率高的。。。。。。

使用特权

评论回复
8
HWM| | 2007-8-29 08:16 | 只看该作者

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

条件语句一般对应于条件转移指令,而散转语句则一般对应于散转指令。
一般用一条散转指令就可以完成散转语句的功能。

使用特权

评论回复
9
王喜| | 2007-8-30 11:22 | 只看该作者

&&&

从程序角度上考虑的话,case 效率要高一些!

使用特权

评论回复
10
forsuccess|  楼主 | 2007-8-30 11:27 | 只看该作者

(@_@)

楼上的能否详细讲讲如何从“程序”角度来考虑?

使用特权

评论回复
11
农民讲习所| | 2007-8-30 12:06 | 只看该作者

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

使用特权

评论回复
12
forsuccess|  楼主 | 2007-8-30 14:35 | 只看该作者

~_~

所长的意思我能不能理解为 使用if else比使用case的效率高呢???

使用特权

评论回复
13
dudongdao| | 2007-8-30 15:03 | 只看该作者

自己看汇编吧~~

   所有 C编译器都能产生一个LST文件,你可以在那里面看到你的没一行C代码是怎么转化成汇编的,那样你就知道辣~

使用特权

评论回复
14
wy3168| | 2007-8-30 17:07 | 只看该作者

C51中不建议使用case

使用特权

评论回复
15
农民讲习所| | 2007-8-30 17:11 | 只看该作者

这样说:

小数两者效率是一样的,大数CASE高。所以尽量使用CASE

使用特权

评论回复
16
HWM| | 2007-8-30 17:23 | 只看该作者

再来一个“没听说过”

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

两种语句具有完全不同的应用,一个针对与布尔量,一个针对于序数变量。

使用特权

评论回复
17
ayb_ice| | 2007-8-30 18:12 | 只看该作者

"C51中不建议使用case"

不知是哪位高手建议的。。。

使用特权

评论回复
18
dudongdao| | 2007-8-31 14:54 | 只看该作者

从原理上去看吧

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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

69

帖子

0

粉丝