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

mar*_*ark 1 c integer sizeof

我理解sizeof操作员,但无法理解sizeof(0)在以下程序中生成4 的背景

#include<stdio.h>

int main()
{

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

return 1;

}
Run Code Online (Sandbox Code Playgroud)

产量:4

Sou*_*osh 7

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

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

sizeof操作者产生其操作数的大小(以字节为单位),其可以是表达或类型的括号名称.大小由操作数的类型确定.[...]

现在,来打字,0就它本身而言,是一个整数常量.

所以,sizeof(0)就像sizeof(int)在你的平台上一样.

也就是说,sizeof生成一个size_t,所以你应该使用%zu格式说明符来打印它.