unsigned char 和 singed char 分析

来源:互联网 发布:cas php client 编辑:程序博客网 时间:2024/06/05 11:07
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";}elsecout << "Error";system("pause");}

这段代码的输入是:

Error

OK

这让我很奇怪,char和unsigned char在内存中形式不同吗?

猜想,flag是无符号时,也一个有符号的作与运算后,结果会变成有符号数。即

flag | 0xf3 后的值是-13(11110011)