c - 为什么 sizeof(int) 小于 -1?

标签 c sizeof

<分区>

在下面的代码中

#include <stdio.h>

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

我得到的输出是“False”而不是“True”。我的理解是 sizeof 运算符只返回 int 的大小,在这种情况下为 4。

为什么条件被评估为假?

最佳答案

sizeof 生成始终为正的 size_t。您正在将它与 -1 进行比较,-1 可能在 size_t 中提升,这给了您一个巨大的数字,很可能大于 int 的大小。

为了确定这一点,试试这个:

printf("%zu\n", sizeof(int));
printf("%zu\n", (size_t)(-1));

[编辑]:根据评论(一些已被删除),我确实指出 sizeof 是一个运算符,而不是一个函数。

关于c - 为什么 sizeof(int) 小于 -1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24797843/

相关文章:

c - 看似不可能的错误检查

c++ - LCD 和 RTC_DS1307- 无法在液晶显示器上正确打印 1-9 位秒数

c - 带数组和指针的 sizeof

c - 为什么在循环中计算 sizeof 并不比使用固定数字来计算对象的大小更快?

c - 即使条件为假,if 语句也会执行

C 计算递归序列 - 预期表达式错误

c - C 中参数的默认值

c++ - 这个 min() 函数是如何工作的?

c++ - sizeof(*this) 和结构继承

c - 我不明白为什么我的数组大小错误