int main(int argc, char *argv[])

   short a = 0xffff;
 
   printf("a = 0x%x\n", a);

  if(a == 0xffff) 

  {

    printf("Just Test\n");

  }

  return 0;
}

 

最后输出的结果是 a = 0xffffffff

原因如下:

1.%x 表示要输出无符号整数(unsigned int)的十六进制形式

2.当有符号类型向更大长度类型转换时,如果首位为1,则前面全部补全为1,如首位为0,则前面全部补全为0

预期的打印Just Test不会被打出来,因为:

在比较时a被强制转换成unsigned int(即0xffffffff)  与 0x0000ffff比较不相等

相关文章:

  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-07-22
  • 2021-12-07
  • 2021-11-12
  • 2022-12-23
  • 2021-10-02
  • 2021-11-05
相关资源
相似解决方案