为什么这个 sizeof(int) 程序在运行时打印出 false?

问题描述

int main()
{
   if(sizeof(int)>-1)
   printf("true");
   else 
   printf("False");
   
   return 0;
}

这个程序在运行时打印出“False”。为什么会这样? 即使它的大小是 4?

解决方法

sizeof() 的结果是无符号值,而比较的右侧是有符号的。编译器会先将右边转换成无符号(一个非常大的数字),然后再进行比较。