c语言异或操作

mtkcpp 2010-04-22 03:05:53
static unsigned char oncore_cmd_Bj[] = { 'B', 'j', 0 };
unsigned char cs = 0;
int len=sizeof(oncore_cmd_Bj);
char *ptr=oncore_cmd_Bj;
while (len--)
cs ^= *ptr++; //请问这句是什么作用?我的理解是 cs = cs ^ (*ptr) ,之后就是ptr++,也就是cs=cs ^ (*(ptr+1))
...全文
884 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
mtkcpp 2010-04-22
  • 打赏
  • 举报
回复
我现在知道了,他是用来做校验的。
mtkcpp 2010-04-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 huanmie_09 的回复:]
cs ^= *ptr++;
尽量避免这样的写法.后自加的时间点是由编译器来实现的.
如果是楼主那样理解的话,建议写成以下两句:
cs ^= *ptr;
ptr++;
[/Quote]
这是一个开源软件,应该是很专业的人写的。我就是现在不太理解为什么这么写。我不明白对cs有什么影响,有什么作用?
yiruirui0507 2010-04-22
  • 打赏
  • 举报
回复
cs ^= *ptr;
ptr++;
mtkcpp 2010-04-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 it3500 的回复:]
static unsigned char oncore_cmd_Bj[] = { 'B', 'j', 0 };
unsigned char cs = 0;
int len=sizeof(oncore_cmd_Bj);
char *ptr=oncore_cmd_Bj;
while (len--)
cs ^= *ptr++; //请问这句是什么作用?我的理解是 cs = cs ^ (*pt……
[/Quote]
但我不明白的是为什么这样写呢?对cs有什么影响呢?
huanmie_09 2010-04-22
  • 打赏
  • 举报
回复
cs ^= *ptr++;
尽量避免这样的写法.后自加的时间点是由编译器来实现的.
如果是楼主那样理解的话,建议写成以下两句:
cs ^= *ptr;
ptr++;
haoxiang12345 2010-04-22
  • 打赏
  • 举报
回复
后置的++应该是先进行异或运算再指向下一个

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧