This question already has answers here:
What can happen if printf is called with a wrong format string?

(5个答案)


4年前关闭。




当在sprintf中使用错误的格式字符串时,我有一定的疑问。例如,%f用作整数的格式说明符。为什么不进行隐式转换?
考虑下面的程序。
#include <stdio.h>
#include <string>
using namespace std;
int main()
{
    int i = 0;
    char temp[50];int a = 1;
    sprintf( temp, "%f",a);
    puts(temp);
    return 1;
}

最佳答案

因为该函数不知道您要发送什么类型的函数,除非您提供适当的参数。

根据定义,可变参数函数没有未定义参数的任何类型信息,并且必须自己确定从给定数据中获取什么。

10-04 21:15