运算时,char型会转换成有符号的int型。
如果char型变量最高位为1,那么会补上三个字节的1.
比如:
char ch = 0xff;
long l = 0;
l|=ch;
int i = 0;
i|=ch;
那么
l = 0xffffffff;
i = 0xffffffff;
无符号的char则不会进行自动补1.
unsigned char uch = 0xff;
long l = 0;
l |= uch;
long i = 0;
i |= uch;
那么
i = 0xff;
l = 0xff;