C++有符号和无符号变量在使用过程中的区别(sign and unsign)

时间:2025-01-20 08:41:25

有符号和无符号变量的赋值操作有时会发生莫名其妙的事情,先看下面的代码:

上面的代码写的有问题吗?有,那么应该如何写呢?

修改:将char *buf 修改为 unsign char *buf

 

原因是什么呢:

1.在进行“|”运算时首先char会被转换为int,如果char为负数,则前三个空的字节会补充"1"。

2.在前三个字节都是1时进行的“|”运算就不起作用了。

 

总结说明:

|int时,char的前面三个字节有时会补充0,有时会补充1。应避免这样使用。

char|int时,前面会补充0。