免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3351 | 回复: 16

a&&b&&c&&b&&a, 编译器能明白我的意思并优化么? [复制链接]

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:172015亚冠之水原三星
日期:2015-06-02 16:34:202015年亚冠纪念徽章
日期:2015-10-19 18:13:37程序设计版块每日发帖之星
日期:2015-11-08 06:20:00
发表于 2010-06-27 02:46 |显示全部楼层
本帖最后由 xinglp 于 2011-03-25 15:33 编辑

a b c 都是表达式

论坛徽章:
0
发表于 2010-06-27 04:33 |显示全部楼层
你的意思是什么?

int x, y, z;
x && y && z && y && x

int foo();
int bar();
int whatever();
foo() && bar() && whatever() && bar() && foo()
是不一样的……

论坛徽章:
0
发表于 2010-06-27 07:51 |显示全部楼层
应该能吧!

论坛徽章:
0
发表于 2010-06-27 07:51 |显示全部楼层
你的意思是什么?

int x, y, z;
x && y && z && y && x

int foo();
int bar();
int whatever(); ...
Etrnls 发表于 2010-06-27 04:33



    具体说说?  学习一下.

论坛徽章:
0
发表于 2010-06-27 11:39 |显示全部楼层
找抽

论坛徽章:
0
发表于 2010-06-27 13:00 |显示全部楼层
恐怕人都不能理解。

论坛徽章:
0
发表于 2010-06-27 13:54 |显示全部楼层
什么地方可以优化。。。{:3_191:}

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:172015亚冠之水原三星
日期:2015-06-02 16:34:202015年亚冠纪念徽章
日期:2015-10-19 18:13:37程序设计版块每日发帖之星
日期:2015-11-08 06:20:00
发表于 2010-06-27 14:39 |显示全部楼层
本帖最后由 xinglp 于 2010-06-27 14:40 编辑

是这个样子的

  1. while(
  2. s1>=SrcHead&&
  3. s2>=TargetHead&&
  4. (!(*s1-*s2))
  5. ){--s1;--s2;}
复制代码
如果编译器先算后面的(!(*s1-*s2)), 可能已经s1<SrcHead了, 就会访问SrcHead的前面的数据, 越界. 虽然是只读

所以就想弄成

  1. s1>=SrcHead&&
  2. s2>=TargetHead&&
  3. (!(*s1-*s2))&&
  4. s1>=SrcHead&&
  5. s2>=TargetHead
复制代码
来保证一下顺序(编译器不会从中间算吧),但是>=都做了两次判断, (程序中,两次变成四次)
普通的gcc编译,不加-O参数,能把两次判断优化成一次么?

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
发表于 2010-06-27 17:21 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:172015亚冠之水原三星
日期:2015-06-02 16:34:202015年亚冠纪念徽章
日期:2015-10-19 18:13:37程序设计版块每日发帖之星
日期:2015-11-08 06:20:00
发表于 2010-06-27 18:13 |显示全部楼层
回复 9# pmerofc

这个是编译器无关的么?  我太土了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP