有符号和无符号变量的赋值操作有时会发生莫名其妙的事情,先看下面的代码:
上面的代码写的有问题吗?有,那么应该如何写呢?
修改:将char *buf 修改为 unsign char *buf
原因是什么呢:
1.在进行“|”运算时首先char会被转换为int,如果char为负数,则前三个空的字节会补充"1"。
2.在前三个字节都是1时进行的“|”运算就不起作用了。
总结说明:
|int时,char的前面三个字节有时会补充0,有时会补充1。应避免这样使用。
char|int时,前面会补充0。