[51单片机] 9句短话,藏大秘密

[复制链接]
shauew 发表于 2015-11-9 10:22 | 显示全部楼层
one more time
Rev[0]+ Rev[1]+ Rev[2]+ Rev[3] = 0x108
由于你定义了uchar 所以溢出部分归零
结果就是0x08
所以
i=Rev[0]+ Rev[1]+ Rev[2]+ Rev[3]              =>     i=0x08
但是
if(i==Rev[0]+ Rev[1]+ Rev[2]+ Rev[3])        =>    if(0x08==0x108)
不满足条件,
结果 i=0xaa就不会执行
最后 i=0x08

这次应该不会错了

评分

参与人数 1威望 +3 收起 理由
hetiandemeng017 + 3 很给力!

查看全部评分

popeye021 发表于 2015-11-9 10:29 | 显示全部楼层
xygyszb 发表于 2015-11-9 10:18
那么Rev[0]+Rev[1]+Rev[2]+Rev[3]的值是多少呢?

上面已经把汇编代码贴出来了,很明显了吧
xygyszb 发表于 2015-11-9 13:18 | 显示全部楼层
popeye021 发表于 2015-11-9 10:29
上面已经把汇编代码贴出来了,很明显了吧

恩,得看那个汇编的。
shauew 发表于 2015-11-9 16:23 | 显示全部楼层
xygyszb 发表于 2015-11-9 10:18
那么Rev[0]+Rev[1]+Rev[2]+Rev[3]的值是多少呢?

0x108
hgjinwei 发表于 2015-11-9 17:40 | 显示全部楼层
这个问题是各个编译器自行发挥的问题,没有标准答案。

评分

参与人数 1威望 +3 收起 理由
hetiandemeng017 + 3 很给力!

查看全部评分

pkuzhx 发表于 2015-11-9 18:58 | 显示全部楼层
看这标题还以为要九*评xxx呢
Alexfang1325 发表于 2015-11-9 19:21 | 显示全部楼层
大忽悠啊,基本概念
lvyunhua 发表于 2015-11-9 22:16 | 显示全部楼层
是啊,基本 概念!
 楼主| hetiandemeng017 发表于 2015-11-10 08:19 | 显示全部楼层
散了吧。我已经知道了!21楼谢谢了。Rev[0]+ Rev[1]+ Rev[2]+ Rev[3]的uchar结果会保存在一个更大的存储空间中,暂时不会溢出。楼主就是这里没搞懂!散分了
xygyszb 发表于 2015-11-10 09:06 | 显示全部楼层
hetiandemeng017 发表于 2015-11-10 08:19
散了吧。我已经知道了!21楼谢谢了。Rev[0]+ Rev[1]+ Rev[2]+ Rev[3]的uchar结果会保存在一个更大的存储空 ...

ywlzh 发表于 2015-11-10 11:15 | 显示全部楼层
xygyszb 发表于 2015-11-9 10:18
那么Rev[0]+Rev[1]+Rev[2]+Rev[3]的值是多少呢?

8 呀 呀呀呀,if只是判断没有赋值
funior 发表于 2015-11-10 13:25 | 显示全部楼层
这个很好理解吧你改成if(i==(uchar)(Rev[0]+Rev[1]+Rev[2]+Rev[3])),就该得到预期结果了。开始对i赋值也相当于uchar i=Rev[0]+Rev[1]+Rev[2]+Rev[3]

评论

不能再赞成了!  发表于 2015-11-10 21:37

评分

参与人数 1威望 +3 收起 理由
hetiandemeng017 + 3 很给力!

查看全部评分

zhuyjgh 发表于 2015-11-10 13:37 | 显示全部楼层
这个要看编译器给不给你扩展成16bit,扩展算你幸运,不扩展它也没错,,
所以这种 (uchar)+(uchar)的运算本身是很危险的!
 楼主| hetiandemeng017 发表于 2015-11-10 21:37 | 显示全部楼层
zhuyjgh 发表于 2015-11-10 13:37
这个要看编译器给不给你扩展成16bit,扩展算你幸运,不扩展它也没错,,
所以这种 (uchar)+(uchar)的运算本 ...

你不知道我要拿来干嘛,告诉你吧,我拿来校验和用的,无所谓溢出与否,只要主从机算法一样就可以了。哈哈
舍恩 发表于 2015-11-11 07:41 | 显示全部楼层
学到了 以前都没注意..
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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