weixin_44500385 2022-04-13 21:18 采纳率: 0%
浏览 1412

%d和%zd的使用导致的不同

问题遇到的现象和发生背景

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”。

我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

3条回答 默认 最新

  • 吕布辕门 后端领域新星创作者 2022-04-13 22:08
    关注

    (int)sizeof 试一下这样,不回出现警告,由于类型原因问题

    评论

报告相同问题?

问题事件

  • 请详细说明问题背景 12月14日
  • 创建了问题 4月13日

悬赏问题

  • ¥15 为什么安装Anaconda时报系统找不到指定文件?
  • ¥15 如何将这个项目的ssh-TCP,改成ssh3-UDP协议
  • ¥20 ic卡dump文件校检码解密
  • ¥15 关于:接收到的数据不是有效的JSON格式
  • ¥15 apdl语言如何增加受力分析
  • ¥15 算法对比:学校优化算法与蚁群算法对比
  • ¥15 机电一体化系统设计说明书
  • ¥20 QChart画大量横向叠加柱状图时,颜色变为白色
  • ¥20 sgy数据提取地震波速,有人能回答吗小馋
  • ¥20 c#实现打开word的功能,并且需要安装成windows服务,word打不开怎么办