Nit*_*inR 2 c equality operators integer-promotion
我刚刚执行了以下代码
main()
{
char a = 0xfb;
unsigned char b = 0xfb;
printf("a=%c,b=%c",a,b);
if(a==b) {
printf("\nSame");
}
else {
printf("\nNot Same");
}
}
Run Code Online (Sandbox Code Playgroud)
对于这段代码,我得到了答案
A =?B =?
不同
为什么我不相同,a和b的价值是多少?
线if (a == b)...在比较之前将字符提升为整数,因此字符的符号性会影响其发生的方式.无符号字符0xFB变为整数251; 有符号字符0xFB变为整数-5.因此,他们是不平等的.