(unsigned char)强制类型转换与0xff &有何不同?详见内图

[复制链接]
4577|5
 楼主| engineerlibing 发表于 2010-3-8 16:40 | 显示全部楼层 |阅读模式
本帖最后由 engineerlibing 于 2010-3-8 16:42 编辑

见下图,

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
lanmp 发表于 2010-3-9 09:30 | 显示全部楼层
后面一个要运算的,前面的不用。
 楼主| engineerlibing 发表于 2010-3-9 13:11 | 显示全部楼层
本帖最后由 engineerlibing 于 2010-3-9 13:12 编辑

2# lanmp 请lanmp兄详细说一下,需要什么运算?
我认为这两种方式应该是一样的啊,为什么得到的结果不同?
lenglx 发表于 2010-3-9 17:08 | 显示全部楼层
理论上是一样的.
这应当是C51的BUG;

导入一个"临时"的中间变量,就可以正常工作了.
unsigned char temp;

temp = ucVal - CNT;
ucData3 = ucBuf[temp];
 楼主| engineerlibing 发表于 2010-3-10 11:44 | 显示全部楼层
4# lenglx
但是我同事在他的机子上未使用中间变量,ucData3却得到了正确的结果!我看了它的编译器版本与我相同,都是uVision3.30, c51 v8.02,查看汇编代码,相同的语句在两台机子上的代码不同,不知道为什么?

会不会和编译器的设置有关呢??我都没有动过啊!
ddtx 发表于 2010-4-16 16:14 | 显示全部楼层
关注,学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

6

帖子

1

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