打印

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

[复制链接]
3690|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
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];

使用特权

评论回复
5
engineerlibing|  楼主 | 2010-3-10 11:44 | 只看该作者
4# lenglx
但是我同事在他的机子上未使用中间变量,ucData3却得到了正确的结果!我看了它的编译器版本与我相同,都是uVision3.30, c51 v8.02,查看汇编代码,相同的语句在两台机子上的代码不同,不知道为什么?

会不会和编译器的设置有关呢??我都没有动过啊!

使用特权

评论回复
6
ddtx| | 2010-4-16 16:14 | 只看该作者
关注,学习

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

6

帖子

1

粉丝