sizeof运算符如何在C

时间:2017-05-21 13:48:23

标签: c

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

我预计该计划将导致" True"但执行后会导致" False"。谁能解释为什么会这样呢?

1 个答案:

答案 0 :(得分:3)

sizeof返回size_t,这是无符号的。

比较无符号和带符号的数字需要在C中引起注意,因为这样的比较通常会给初学者程序员带来惊人的结果,正如我们在这里看到的那样。

基本上,-1会转换为非常大的unsigned int,因此您的条件为false。