为什么0的大小显示为4?

时间:2017-03-10 06:03:24

标签: c integer sizeof

我理解sizeof运算符,但无法理解sizeof(0)在以下程序中生成4的背景

#include<stdio.h>

int main()
{

printf("%d \n",sizeof(0));

return 1;

}

输出:4

2 个答案:

答案 0 :(得分:7)

sizeof返回提供的类型的大小,而不是

引用C11,章节§6.5.3.4,(强调我的

  

sizeof运算符产生其操作数的大小(以字节为单位),可以是   表达式或类型的括号名称。 大小取决于类型   操作数。 [...]

现在,单独输入0就是一个整数常量。

因此,sizeof(0)与您平台上的sizeof(int)相同。

也就是说,sizeof生成size_t,因此您应该使用%zu格式说明符来打印它。

答案 1 :(得分:0)

0是一个整数,sizeof给出的内存大小为4个字节(int)