在C中,为什么if(sizeof(int)> -1)给出错误输出?

时间:2016-11-12 19:08:58

标签: c if-statement sizeof

if(sizeof(int)>-1)
{
printf("0");
}
else
{
printf("else");
}

它执行else语句。 为什么它不遵循if部分,即使int size> -1。

1 个答案:

答案 0 :(得分:2)

sizoe(int)生成类型为size_t的整数,它是无符号整数。由于C中为usual arithmetic conversions-1会转换为size_t,因此-1会变为SIZE_MAX。显然,sizeof(int)小于SIZE_MAX且条件(if)为假。