void main()
{
char flag = 0x80;
unsigned char flag2 = 0x80;
if((flag | 0xf3) == 0xf3)
{
cout << "OK";
}
else
cout << "Error";
cout << "\n";
if((flag2 | 0xf3) == 0xf3)
{
cout << "OK";
}
else
cout << "Error";
system("pause");
}
这段代码的输入是:
Error
OK
这让我很奇怪,char和unsigned char在内存中形式不同吗?
猜想,flag是无符号时,也一个有符号的作与运算后,结果会变成有符号数。即
flag | 0xf3 后的值是-13(11110011)