问题遇到的现象和发生背景
C语言中,%d的使用会出现警告和提醒,该用%zd后没问题,我想知道%d和%zd有什么不同,上网看到的都不太清楚,其中提到了size_t,这个与这个问题有什么关系吗?
问题相关代码,请勿粘贴截图
int main()
{
int ahh[12] = { 3,23,22 };
printf("%d\n", sizeof(ahh));
return 0;
}
运行结果及报错内容
前后都是48,但是用%d会有两个警告
警告 C4477 “printf”: 格式字符串“%d”需要类型“int”的参数,但可变参数 1 拥有了类型“size_t”
警告 C6328 大小不匹配: 已将“unsigned __int64”作为 Param(2) 传递,但需要使用“int”来调用“printf”。