欢迎光临散文网 会员登陆 & 注册

32位设备的隐藏问题

2021-03-08 23:11 作者:晓舟_ZhouSensor  | 我要投稿

遇到相同问题的人:https://www.stmcu.org.cn/module/forum/thread-562364-1-1.html


今天在测试协议通讯的时候,出现了一个从来没想过的问题……

你在观察A和B的时候,A=B,但程序最终结果告诉你A≠B


一开始调试调的我很懵逼,因为无论用何种debug方法观察A和B,两个数值都是相等的,但程序无论如何都去执行A不等于B的那一项。


在神仙群里刚发完求助,我就突然反应过来,我是在32位的设备上进行编程。我判断的数是16位的,会不会程序把另外剩余16位进行比较了……

写了个(unsigned short)对着*(unsigned short*)再强制转换了一次,果然这次程序执行正确了。


这也是先前写8位机的时候从没遇过的现象,因为8位机对于16位数据,是需要进行两次比较,一定不会有多余的内容,所以一定不会出错。

而32位机对16位数据只需要进行一次比较,所以在寄存器内会有另外多余的位数。

需要用强制转换或者其他办法,确保剩余的位数在预料范围内,才能保证程序正确运转。

32位设备的隐藏问题的评论 (共 条)

分享到微博请遵守国家法律