keil的c51编译器奇怪!

[复制链接]
2678|9
 楼主| hartcomm 发表于 2009-3-5 11:39 | 显示全部楼层 |阅读模式
angle += (20/90)*(7*ang_rate[0]+32*ang_rate[1]+12*ang_rate[2]+32*ang_rate[3]+7*ang_rate[4]);  //句1

angle = angle + (20/90)*(7*ang_rate[0]+32*ang_rate[1]+12*ang_rate[2]+32*ang_rate[3]+7*ang_rate[4]);   //句2

angle +=1; //句3

分别有三句,我已经把优化级别降为最低。居然不编译句1,而句3,句2编译。难道欺长怕段? 加上 volatile 后 句1才被编译。

奇怪!
computer00 发表于 2009-3-5 12:04 | 显示全部楼层

这么长?看着晕...或许被合成一句了。

mohanwei 发表于 2009-3-5 12:56 | 显示全部楼层

那是编译器聪明……

直接合并了
yanfengzhu 发表于 2009-3-5 13:18 | 显示全部楼层

20/90 = 0, 整个运算结果为0,编译器当然不会那么傻了.

xwj 发表于 2009-3-5 13:40 | 显示全部楼层

确实是编译器聪明……

人太傻
ayb_ice 发表于 2009-3-5 21:25 | 显示全部楼层

又发现有人怀疑KEIL了

汽车电子 发表于 2009-3-5 22:28 | 显示全部楼层

是编译器聪明

  不调用的函数也不编译的。

  LZ的情况,第一句是废的,白忙活,编译它干嘛? 

  如果再加一句angle = xxx,则前面三句都不编译。
Airwill 发表于 2009-3-6 00:29 | 显示全部楼层

LZ 比编译器聪明嘛

 楼主| hartcomm 发表于 2009-3-6 20:57 | 显示全部楼层

惭愧

把90放到最后除 或者强制转换类型 似乎可以

还有一些计算 在vc中的计算与c51中完全不同,看了下汇编 似乎keil太聪明 


至于 xwj ,跟我又仇?!  在21ic上常常被激起一种暴力的冲动,冷不住有疯狗咬人。
上次见xwj咬过一次人,这次居然扑我而来? 小心小心

在21ic上 奇怪! 居然越老越疯狂!
huangqi412 发表于 2009-3-6 21:07 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

684

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部