我理解sizeof
运算符,但无法理解sizeof(0)
在以下程序中生成4的背景
#include<stdio.h>
int main()
{
printf("%d \n",sizeof(0));
return 1;
}
输出:4
答案 0 :(得分:7)
sizeof
返回提供的类型的大小,而不是值。
引用C11
,章节§6.5.3.4,(强调我的)
sizeof
运算符产生其操作数的大小(以字节为单位),可以是 表达式或类型的括号名称。 大小取决于类型 操作数。 [...]
现在,单独输入0
就是一个整数常量。
因此,sizeof(0)
与您平台上的sizeof(int)
相同。
也就是说,sizeof
生成size_t
,因此您应该使用%zu
格式说明符来打印它。
答案 1 :(得分:0)
0是一个整数,sizeof给出的内存大小为4个字节(int)