#include <stdio.h>
int main(void)
{
if (sizeof(int) > -1)
printf("True");
else
printf("False");
}
它打印False
。为什么 sizeof() 在 if
中不返回值?
最佳答案
sizeof
不是一个函数,它是一个运算符。括号不是运营商名称的一部分。- 失败是因为生成的值具有无符号类型
size_t
,这导致“通常的算术转换”,其中-1
被转换为无符号,在这种情况下它是一个非常大的数字。
基本上你是在比较 4 > 0xffffffffu
,或者至少是接近它的东西。 See this question了解详情。
关于c - if 语句中的 sizeof() 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17293749/