打印

C语言遇到的问题

[复制链接]
1703|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当然不相等。

使用特权

评论回复
5
win2000_li| | 2009-8-12 08:44 | 只看该作者
学习。。。。。。。。。。。。。。。。。。。

使用特权

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

本版积分规则

101

主题

356

帖子

0

粉丝