为什么(sizeof(int)> -1)为false?

你能否certificate以下代码:

#include int main() { if(sizeof(int) > -1) { printf("\nTrue\n"); } else { printf("\nFALSE\n"); } } 

输出是FALSE …..告诉我原因

sizeof(int)类型为size_t ,这是一个无符号整数类型。

-1具有int类型,它是有符号整数类型。

将有符号整数与无符号整数进行比较时,首先将有符号整数转换为无符号整数,然后使用两个无符号整数执行比较。

sizeof(int) > (unsigned int)-1是false,因为(unsigned int)-1在大多数实现中是一个非常大的数字(等于UINT_MAX,或者是适合unsigned int的最大数字)。

 sizeof 

产生无符号类型的值(即size_t )。

sizeof(int) > -1表达式中,通常的算术转换适用, -1转换为sizeof的无符号类型,这导致大于-1的巨大无符号值。

这是因为sizeof运算符返回无符号整数类型。 与有符号整数类型进行比较时,有符号整数将转换为无符号整数。 因此,实际上,您将sizeof(int)与最大可能的无符号整数进行比较。

您可以强制通过强制转换来签署大小:

 #include  int main() { if((int)sizeof(int) > -1) { printf("\nTrue\n"); } else { printf("\nFALSE\n"); } }