打印

求助:请教高手单片机C语言中的问题

[复制链接]
3109|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
comeon201208|  楼主 | 2013-3-9 15:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们在写程序的时候,总会用到switch语句跟if语句,请问在单片机中,我实现同样的功能任务切换,在同样的MCLK下,我用switch...case语句或者是if...else if语句,哪一种语句的执行效率高,及所用时间短,占用资源少?这个问题我一直都想整明白的,可是一直都不得要领,请教各位大虾了,谢谢!

相关帖子

沙发
胡斯哲| | 2013-3-9 21:56 | 只看该作者
这个不晓得   占个位置  等高手!!

使用特权

评论回复
板凳
jobszheng| | 2013-3-10 10:41 | 只看该作者
lm3s811上是case语句在优于if语句。

使用特权

评论回复
地板
hualch007| | 2013-3-10 13:39 | 只看该作者
现在是什么年代了,有必要纠结这个问题吗?

使用特权

评论回复
5
refee| | 2013-3-10 14:51 | 只看该作者
if语句效率高 switch可读性强 话说超过三个以上的分支还是建议用switch

使用特权

评论回复
6
cjhk| | 2013-3-10 19:09 | 只看该作者
主要还是看编译器的设置以及单片机的内部结构   这个好像没有固定的答案  呵呵

使用特权

评论回复
7
1021256354| | 2013-3-10 19:45 | 只看该作者
经典if.....else语句,执行效率高,switch虽然可读性较强,但是限制性很大,

使用特权

评论回复
8
jlass| | 2013-3-11 09:33 | 只看该作者
不一定吧,这有什么可说的。

和你的参数有直接相关性,其中一个是(不管是if还是switch)第一次判断就成立了,于是就结束了,另一个是最后一次判断才成立,明显是第一个效率高嘛。

使用特权

评论回复
9
smilingangel| | 2013-3-11 12:54 | 只看该作者
这个问题的的却很重要的,在单片机资源有限的条件下的还必须注意的

使用特权

评论回复
10
tianm| | 2013-3-11 12:58 | 只看该作者
这要看怎么应用和编程思想 IF套用 也是很麻烦的

使用特权

评论回复
11
51xlf| | 2013-3-11 13:05 | 只看该作者
switch
case语句用时短

使用特权

评论回复
12
51xlf| | 2013-3-11 13:05 | 只看该作者
这个判断好像只是两个时钟吧

使用特权

评论回复
13
谈的元| | 2013-3-11 23:00 | 只看该作者
按理CASE快,多数用查表跳转完成

实际取决编译的代码

使用特权

评论回复
14
superman2012| | 2013-3-11 23:40 | 只看该作者
不好说,这switch语句与if语句的看在什么一样的场合下

使用特权

评论回复
15
三千花花世界| | 2013-3-12 11:48 | 只看该作者
不一样的编译器和不一样的优化条件,同样的C语句编译出来的汇编指令都是不同的,所以这个问题很难回答。

更重要的是,如今大多数的主流芯片在内核里都内置了预取指和跳转分支预取指等功能,在这种情况下,更难讨论你的问题。

我的建议是超过2个分支就是用SWITCH,在内核如此强劲的今天,程序的可读性也许更为重要。

使用特权

评论回复
16
comeon201208|  楼主 | 2013-7-11 21:14 | 只看该作者
谢谢各位的大力支持的,这个我结贴了啊

使用特权

评论回复
17
comeon201208|  楼主 | 2013-7-11 21:15 | 只看该作者
wangfuchong 发表于 2013-3-9 22:02
帮你在这个问了,自己关注一下有无回答:http://www.deyisupport.com/question_answer/f/55/t/18983.aspx ...

谢谢楼上,好的,我看看的啦

使用特权

评论回复
18
comeon201208|  楼主 | 2013-7-11 21:18 | 只看该作者
wangfuchong 发表于 2013-3-9 22:02
帮你在这个问了,自己关注一下有无回答:http://www.deyisupport.com/question_answer/f/55/t/18983.aspx ...

给完分的我仔细的去看了,楼上给帮忙解决的非常不错的,太谢谢了

使用特权

评论回复
19
comeon201208|  楼主 | 2013-7-11 21:20 | 只看该作者
我把wangfuchong在其他地方帮我解决的好答案的分享给大家了
switch语句反而比ifelse的执行效率要高。

switch...case与if...else的根本区别在于,switch...case会生成一个跳转表来指示实际的case分支的地址,而这个跳转表的索引号与switch变量的值是相等的。从而,switch...case不用像if...else那样遍历条件分支直到命中条件,而只需访问对应索引号的表项从而到达定位分支的目的。

使用特权

评论回复
20
通宵敲代码| | 2013-7-14 16:44 | 只看该作者
如果选择量很少,估计好if else 好用,多了的话,估计就是switch case了,至少看着方便,呵呵呵。

使用特权

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

本版积分规则

69

主题

4146

帖子

9

粉丝