威纶通官方论坛

各位大侠帮忙看看这个宏程序为啥运算结果溢出了?实在是想不明白。

  [复制链接]
 楼主| 发表于 2011-9-18 21:37:59 | 显示全部楼层
回复 20# mogoo


    宏程序代码在1#,有问题的话给我留言。
 楼主| 发表于 2011-9-19 08:41:20 | 显示全部楼层
回复 20# mogoo


    改成unsigned short total还是不行,结果和原来的一样。
 楼主| 发表于 2011-9-19 09:05:40 | 显示全部楼层
谢谢各位大侠了,在它char send[10],rece[10]的前面加unsigned就好用了。
发表于 2011-9-19 10:28:40 | 显示全部楼层
你好,你遇见的这个问题是:数据格式问题,在我的这个帖子里有解决办法。
http://www.weinview.cn/bbs/viewthread.php?tid=2970
发表于 2011-9-20 10:16:51 | 显示全部楼层
65514=FFEA,请将变量定义为无符号数据类型,如下:
unsigned char temp
unsigned char send[10],rece[10]
unsigned short addr,CRC16
unsigned char return_value
unsigned short total
发表于 2012-3-23 08:16:11 | 显示全部楼层
问题出在“+rece[4] ”。这是个计算机常识问题。也就是数据类型转换时,经常会出现错的。short类型是16bit,char是8bit。8bit转换成16bit时要根据8bit最高位来扩展的。现在是0xEA,扩展成为了0xFFEA。所以应该改为: total=(rece[3]&0xff)*256+rece[4]&0ff。不过,还是要谢谢您提出的问题,我在我刚写的一段宏指令中也用到了类似的转换,犯了同样的错误。
发表于 2012-3-23 09:02:46 | 显示全部楼层
因该是 total=(rece[3]&0xff)*256+(rece[4]&0xff)。
您需要登录后才可以发帖 登录 | 注册

本版积分规则

回复帖子

Archiver|小黑屋|威纶通官网 ( 粤ICP备06054553号 )

GMT+8, 2024-5-19 21:58

Powered by Discuz! X3.4

© 2001-2023 Comsenz Inc.

快速回复 返回顶部 返回列表