我无法理解为什么这段代码输出False:
if (sizeof(int) > -1)
printf("True");
else
printf("False");
当我尝试打印sizeof(int)
返回的是4时。
答案 0 :(得分:3)
sizeof
运算符的结果类型为size_t
。您的-1
是signed int
。比较两者时,后者将转换为size_t
,从而产生相当大的无符号值。
答案 1 :(得分:1)
按标准sizeof
返回unsigned integer type size_t
。虽然确切的类型是实现定义的,但肯定是无符号的。当您尝试将其与有符号整数-1
进行比较时,-1
将转换为此类型的最大值(尝试编写(unsigned)-1
并检查该值),因此比较结果为false。