You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言printf格式符与参数不匹配为何输出随机值?

为什么printf输出末尾出现随机值?

你的问题核心是printf的格式占位符数量和传入的参数不匹配:

  • 格式字符串里有3个%d占位符,但你只传递了val2和val两个参数。
  • C语言中,printf会按照格式串的要求,从函数调用栈里依次读取对应数量的参数。当参数数量不足时,它会继续读取栈中未被初始化的内存区域,这块区域的内容是程序运行残留的垃圾值,也就是你看到的3485696这类随机数,这种情况属于C语言里的「未定义行为」——每次运行的结果都可能不一样。

修正方法二选一即可:

  1. 调整格式串,让占位符数量和参数一致:
int val = 1, val2 = 1;
printf("El primer numero seria %d y el segundo seria %d", val2, val);
  1. 补全缺失的参数,对应第三个%d:
int val = 1, val2 = 1, val3 = 2; // 示例新增参数
printf("El primer numero seria %d y %d el segundo seria %d", val2, val, val3);

内容的提问来源于stack exchange,提问作者Jorge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 02:08:09