<分区>
在下面的代码中
#include <stdio.h>
int main()
{
if (sizeof(int) > -1)
printf("True");
else
printf("False");
return 0;
}
我得到的输出是“False”而不是“True”。我的理解是 sizeof 运算符只返回 int 的大小,在这种情况下为 4。
为什么条件被评估为假?
<分区>
在下面的代码中
#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/