设为首页收藏本站

简体中文 繁體中文 English 日本語 Deutsch 한국 사람 بالعربية TÜRKÇE português คนไทย Français

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

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

[复制链接]

28

主题

614

回帖

1424

积分

金牌会员

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


回复

使用道具 举报

36

主题

923

回帖

2004

积分

金牌会员

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

使用道具 举报

67

主题

608

回帖

1495

积分

金牌会员

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

使用道具 举报

24

主题

364

回帖

910

积分

高级会员

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

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

使用道具 举报

141

主题

381

回帖

1287

积分

金牌会员

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

使用道具 举报

28

主题

614

回帖

1424

积分

金牌会员

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

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

这不是一样的么

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

使用道具 举报

149

主题

1929

回帖

4433

积分

论坛元老

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


看看汇编呀~
回复

使用道具 举报

56

主题

454

回帖

1184

积分

金牌会员

积分
1184
发表于 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

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

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

使用道具 举报

26

主题

644

回帖

1488

积分

金牌会员

积分
1488
发表于 2018-8-21 17:07:00 | 显示全部楼层
寻址执行,再到判断。写法不同判断还是一样的吧,判优.这样做没意义。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-30 21:47 , Processed in 0.020475 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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