你可以证明以下代码:
#includeint main() { if(sizeof(int) > -1) { printf("\nTrue\n"); } else { printf("\nFALSE\n"); } }
输出是FALSE
.....建议我的原因
sizeof(int)
具有type size_t
,这是一个无符号整数类型.
-1
具有类型int
,它是有符号整数类型.
将有符号整数与无符号整数进行比较时,首先将有符号整数转换为无符号整数,然后使用两个无符号整数执行比较.
sizeof(int) > (unsigned int)-1
是错误的,因为(unsigned int)-1
在大多数实现中都是一个非常大的数字(等于UINT_MAX,或者适合的最大数字unsigned int
).