为什么sizeof(int)不大于-1?

这是我的C代码:为什么输出“False”?????

为什么4> -1 ???

代码:

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

因为sizeof(int)是无符号的。 因此-1转换为大的无符号值。

因为sizeof产生类型size_t的值,这是一个无符号类型。 在>表达式中,通常的算术转换会将-1转换为无符号类型,这是>结果的类型。 由此产生的价值将是巨大的正值。

要获得预期的行为,请使用:

 (int) sizeof (int) > -1