int main()
{
if (sizeof(int) > -1 )
printf("True");
else
printf("False");
return 0 ;
}
我预计该计划将导致" True"但执行后会导致" False"。谁能解释为什么会这样呢?
答案 0 :(得分:3)
sizeof返回size_t,这是无符号的。
比较无符号和带符号的数字需要在C中引起注意,因为这样的比较通常会给初学者程序员带来惊人的结果,正如我们在这里看到的那样。
基本上,-1会转换为非常大的unsigned int,因此您的条件为false。