作者:书友40301072 | 来源:互联网 | 2023-02-09 14:02
我理解sizeof
操作员,但无法理解sizeof(0)
在以下程序中生成4 的背景
#include
int main()
{
printf("%d \n",sizeof(0));
return 1;
}
产量:4
1> Sourav Ghosh..:
sizeof
返回提供的类型的大小,而不是值.
引用C11
,章节§6.5.3.4,(强调我的)
的sizeof
操作者产生其操作数的大小(以字节为单位),其可以是表达或类型的括号名称.大小由操作数的类型确定.[...]
现在,来打字,0
就它本身而言,是一个整数常量.
所以,sizeof(0)
就像sizeof(int)
在你的平台上一样.
也就是说,sizeof
生成一个size_t
,所以你应该使用%zu
格式说明符来打印它.