C语言printf格式符与参数不匹配为何输出随机值?
为什么printf输出末尾出现随机值?
你的问题核心是printf的格式占位符数量和传入的参数不匹配:
- 格式字符串里有3个
%d占位符,但你只传递了val2和val两个参数。 - C语言中,printf会按照格式串的要求,从函数调用栈里依次读取对应数量的参数。当参数数量不足时,它会继续读取栈中未被初始化的内存区域,这块区域的内容是程序运行残留的垃圾值,也就是你看到的3485696这类随机数,这种情况属于C语言里的「未定义行为」——每次运行的结果都可能不一样。
修正方法二选一即可:
- 调整格式串,让占位符数量和参数一致:
int val = 1, val2 = 1; printf("El primer numero seria %d y el segundo seria %d", val2, val);
- 补全缺失的参数,对应第三个
%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
相关产品推荐
相关产品推荐

