找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 202|回复: 22

有没有C语言大佬,有一个哲学问题请教。

[复制链接]

24

主题

522

回帖

1168

积分

金牌会员

积分
1168
发表于 2018-8-21 16:16:31 | 显示全部楼层 |阅读模式
今天听闻一个奇怪的理论
if(0==i)   和 if(i==0)这两条判断
据说if(0==i)比较快。
但是我查看编译过程中生成的list汇编文件  发觉两者没啥区别。
这个是要分平台和编译器来论的吗


回复

使用道具 举报

21

主题

319

回帖

777

积分

高级会员

积分
777
发表于 2018-8-21 16:23:26 | 显示全部楼层
我记得 数值==变量名 这种写法是为了防止 变量名==数值 这种写法少写一个等于号而变成了赋值语句吧~

当然,不排除现代编译器自动把if(0==i)   和 if(i==0) 都优化成if(0==i)了,所以两种写法产生的汇编其实都是if(0==i)的?
回复

使用道具 举报

160

主题

1926

回帖

4420

积分

论坛元老

积分
4420
发表于 2018-8-22 09:35:00 | 显示全部楼层
本来还想进来装个逼 发现楼主自己才是大佬


                                                      
回复

使用道具 举报

35

主题

883

回帖

1907

积分

金牌会员

积分
1907
发表于 2018-8-21 16:19:04 | 显示全部楼层
是不是i==0要转换在判断,0==i直接判断内存地址啊?
回复

使用道具 举报

63

主题

602

回帖

1465

积分

金牌会员

积分
1465
发表于 2018-8-21 16:22:15 | 显示全部楼层
这不是一样的么
回复

使用道具 举报

24

主题

522

回帖

1168

积分

金牌会员

积分
1168
 楼主| 发表于 2018-8-21 16:33:37 | 显示全部楼层

imyoy 发表于 2018-8-21 16:33

这不是一样的么

我也觉得目前实验的两个单片机编译器都是一样的
但是不知道是不是别的平台 别的编译器是不是不一样的
回复

使用道具 举报

118

主题

1767

回帖

3942

积分

论坛元老

积分
3942
发表于 2018-8-21 16:37:50 | 显示全部楼层


看看汇编呀~
回复

使用道具 举报

65

主题

182

回帖

607

积分

高级会员

积分
607
发表于 2018-8-21 16:33:00 | 显示全部楼层
大佬就是大佬, 在这硬件性能过剩的时代还那么较真。 循坏一亿次对比相差会有感吗?
回复

使用道具 举报

55

主题

419

回帖

1077

积分

金牌会员

积分
1077
发表于 2018-8-21 16:40:31 | 显示全部楼层

waterscud 发表于 2018-8-21 17:07

大佬就是大佬, 在这硬件性能过剩的时代还那么较真。 循坏一亿次对比相差会有感吗? ...

有的  在某些低端应用场合    或者是比较精密的应用场合   芯片的能力不够  一些操作需要一个指令周期一个指令周期的抠准时间这个是 开发规范,没有效率问题
回复

使用道具 举报

0

主题

1

回帖

4

积分

新手上路

积分
4
发表于 2018-8-21 16:59:13 | 显示全部楼层

ry-ss 发表于 2018-8-21 17:10

有的  在某些低端应用场合    或者是比较精密的应用场合   芯片的能力不够  一些操作需要一个指令周期一 ...

你是说卫星或者太空飞船吧?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Discuz! X

GMT+8, 2025-4-20 05:01 , Processed in 0.020907 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表