不同的数据类型 - 有符号和无符号

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的价值是多少?

Lee*_*ker 6

线if (a == b)...在比较之前将字符提升为整数,因此字符的符号性会影响其发生的方式.无符号字符0xFB变为整数251; 有符号字符0xFB变为整数-5.因此,他们是不平等的.