社区
UNIX文化
帖子详情
昨天笔试的一道题目,请大家帮忙看看
ggodblog
2010-10-18 01:15:59
昨天去MaxWit笔试C语言,有一个题目想请大大们帮忙解决下:
switch case 语句和if else语句哪个效率高?
我的理解是switch case应该比if esle的效率高,可是最后的答案不对,那边的老师说三种情况都有可能,效率高,效率低,效率一样。具体为什么我没方便问,还是不能懂,当时那个老师提了一句什么C本质什么的,不知道是什么,有知道的大大们请告知一下,谢谢啦!
...全文
188
21
打赏
收藏
昨天笔试的一道题目,请大家帮忙看看
昨天去MaxWit笔试C语言,有一个题目想请大大们帮忙解决下: switch case 语句和if else语句哪个效率高? 我的理解是switch case应该比if esle的效率高,可是最后的答案不对,那边的老师说三种情况都有可能,效率高,效率低,效率一样。具体为什么我没方便问,还是不能懂,当时那个老师提了一句什么C本质什么的,不知道是什么,有知道的大大们请告知一下,谢谢啦!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Tony2251
2010-10-20
打赏
举报
回复
看下《深入理解计算机系统》里面有个比较详细的说明。
jslp
2010-10-20
打赏
举报
回复
这种题目出得太学究了,实际开发影响效率的基本不是 if else 和switch case的效率差别问题。
即使真在这个上面出现效率问题,换换试试就可以了。开发时考虑这种问题如同戴着脚镣跳舞。
准备开发操作系统、数据库还是编译器呀?这些问题在硬件的发展速度面前都是浮云。还是研究研究dang有几种写法吧。
风去沙来
2010-10-20
打赏
举报
回复
这个用逆向工程 更直观
ArayChou
2010-10-20
打赏
举报
回复
弱弱的说,感觉效率都是一样的吧?
如果编译器对两个都进行完美的优化,实现相同的功能,用switch和 if,编译出来的机器码应该是一样的。
freetstar
2010-10-20
打赏
举报
回复
[Quote=引用 8 楼 sundesheng125 的回复:]
引用楼主 ggodblog 的回复:
昨天去MaxWit笔试C语言,有一个题目想请大大们帮忙解决下:
switch case 语句和if else语句哪个效率高?
我的理解是switch case应该比if esle的效率高,可是最后的答案不对,那边的老师说三种情况都有可能,效率高,效率低,效率一样。具体为什么我没方便问,还是不能懂,当时那个老师提了一句什么C本质什么的,不知道是什么,有知……
[/Quote]
对的
lilyapple
2010-10-20
打赏
举报
回复
这也太细了。。。
greenweather
2010-10-20
打赏
举报
回复
这可能是个感觉是个很蛋疼的问题啊
easylove
2010-10-19
打赏
举报
回复
跟控制条件的顺序有关系, swaitch 中 也是从上到下判断 直到找到满足条件为之 与if esle 一样
bourbaki
2010-10-19
打赏
举报
回复
我觉得对这个问题应该有三个角度。
一个是语言设计者。也许他认为分支结构普遍的有两种模式,是if-else和switch-case,他应该体现出来,而且这样可以给编译器的设计,特别是在性能优化上留出空间。
一个是编译器。比如我来写编译器,我就是故意把switch-case的实现做得差一点,你拿我怎么办?
一个是程序员。事实上,我觉得,除非是非常非常非常的对性能敏感,而且对机器和编译器的情况都比较了解,否则在这种细节上折腾,几乎总是事倍功半。
gohome520
2010-10-19
打赏
举报
回复
考得这么细呀。
跟while(1)与for(;;)哪个效率高是一类问题。
实际上,有没有必要考虑这么细呢? 现在的编译器都很强大,会自动优化得很好。
ggodblog
2010-10-19
打赏
举报
回复
下午的时候我给MaxWit那边打了个电话,好歹问到了些答案,将我理解的和大家分享下!
第一种情况,如果case条件是比较简单的情况,switch case会直接通过switch的条件直接跳转到相应的case处执行,效率比if else 高
第二种情况,如果case条件比较复杂一点,无法直接跳转,最后就被转换成和if else一样的程序
第三种情况,在第二种情况的基础上,如果自己写的if else条件将可能性较大的放在前面,此时if else就会比switch case的效率高
我只是半懂半记了,可能表达的不是很清楚,还不是特别的懂,感觉好像是对的,但好像说不好,听MaxWit那边的人给我讲解的时候很简单的样子,我自己就讲不好了,以后还要多出来和大家交流阿,谢谢楼上的朋友们,也希望我的答案能对你有些帮助
cangtiantiexue
2010-10-19
打赏
举报
回复
原来如此,还要考虑CASE的值的问题呀。
coding码场
2010-10-18
打赏
举报
回复
[Quote=引用楼主 ggodblog 的回复:]
昨天去MaxWit笔试C语言,有一个题目想请大大们帮忙解决下:
switch case 语句和if else语句哪个效率高?
我的理解是switch case应该比if esle的效率高,可是最后的答案不对,那边的老师说三种情况都有可能,效率高,效率低,效率一样。具体为什么我没方便问,还是不能懂,当时那个老师提了一句什么C本质什么的,不知道是什么,有知道的大大们请告知一下,谢谢啦!
[/Quote]不过是switch还是if else,把出现概率大的项目放在最前面,效率就会高一些。
Linux-Torvalds
2010-10-18
打赏
举报
回复
[Quote=引用 6 楼 dizengrong 的回复:]
我们在学校中学的C基本上算是点皮毛而已~~~
要深入了解C可以看大师们写的书。
C专家编程很值得一看,这是我的体会
[/Quote]
assembly,而不是C专家编程之类的
dizengrong
2010-10-18
打赏
举报
回复
我们在学校中学的C基本上算是点皮毛而已~~~
要深入了解C可以看大师们写的书。
C专家编程很值得一看,这是我的体会
李迟
2010-10-18
打赏
举报
回复
C本质?还真没有研究过。谁普及普及?
强天放
2010-10-18
打赏
举报
回复
哦。学习。
freetstar
2010-10-18
打赏
举报
回复
ls说的比较好,当然还有与可能出现的条件的概率有关,
dizengrong
2010-10-18
打赏
举报
回复
这个问题感觉跟编译原理有关咧~~~
可以考虑当有很多分支时的情况:
对于if-else的执行是从上到下依次检测条件是否成立
而对于switch-case的编译器的实现可能是用一个数组来实现的,
而数组中的每个元素包括对应case的值和此条case语句的地址,这样一来自然是switch-case快了许多!
justkk
2010-10-18
打赏
举报
回复
不是很懂..
这些都是流程控制语句,效率的关键应该是具体分支执行的语句,而不是流程控制语句本身吧
T2最长的AB序列(20分) - 京东前端
笔试
编程题&;题解
阿里系的
笔试
笔试
了好几次,都 a 了
一道
半以上,为啥都不约面,是要 a 两道才约面嘛,还是不怎么看笔。华为OD招聘,测试工程师,地点南京,薪资有竞争力,部门直招,欢迎来聊聊 #OD招聘# #23届找工。友友们,大家都...
2023 哔哩哔哩
笔试
题 bilibili
笔试
0908
佬们
看看
有什么建议,无实习,到现在还是0面试,着实有点慌了简历是凑一张还是分两张啊,一张感觉有点紧凑了,就扩展了一些,写活动经历有用吗,求大家给点建议#简历被挂。我看人家都发的投一个中一个,我这投了一堆...
10.16 杭州银行
笔试
面经 - 编程题 &; 题解
投递岗位:(美团)安卓客户端开发投递时间:美团似乎开的时间比较早,而我是9月月底投的,然后10月月初收到
笔试
,10月月中流程结束。十点钟的面试,面试官没有开摄像头,而且感觉有点嘈杂?一刻也没有为博世的二面...
AI无限·兴好有你-【万兴科技】2024届全球校园招聘启动
今天同花顺
笔试
和七点滴滴
笔试
,快手
笔试
,推了 快手,今天下午到明天下午浙江大华股份
笔试
明天下午五点贝壳找房面试,晚上七点京东和bilibili
笔试
,京东推。哎,最后一题没有对pow也取mod了,还得用快速幂,2 3题...
广州游戏公司4399秋季招聘火热报名中(第二次
笔试
倒计时)
目前秋招还在火热进行中,对于一心想找到好的工作岗位的人,还
请
留心一下我司恒玄科技,以下是公司的简介:公司简介: 恒。来学校宣讲,今年一共45个hc,20个博士,25个硕士,硕士每年总包17万,四五年以后给事业编...
UNIX文化
2,161
社区成员
4,355
社区内容
发帖
与我相关
我的任务
UNIX文化
Linux/Unix社区 UNIX文化
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 UNIX文化
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章