C语言遇到的问题

[复制链接]
2650|4
 楼主| zyboy 发表于 2009-8-11 16:53 | 显示全部楼层 |阅读模式
今天调一个程序时候发现的,校验和为数据异或减一

unsigned char recsum,xorsum;

if(recsum != (xorsum-1))   

{

}

传过来的校验和为0xFF; 结果出错。recsum为接收的校验和,xorsum是计数的异或值,上面代码有问题

相对于
recsum == 0xFF   
xorsum == 0x00

if(recsum != (xorsum-1))  //这时候不相等
欧阳青云 发表于 2009-8-11 17:14 | 显示全部楼层
。。。。。。。。
dudongdao 发表于 2009-8-11 19:36 | 显示全部楼层
这样写试试~~
if(recsum != (unsigned char)(xorsum-1))  //这时候不相等
void_c 发表于 2009-8-12 08:30 | 显示全部楼层
0-1=-1,
类型是int,16进制表示是0xffff,与0xff当然不相等。
win2000_li 发表于 2009-8-12 08:44 | 显示全部楼层
学习。。。。。。。。。。。。。。。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

101

主题

356

帖子

0

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