C6272

警告 C6272:传递了非浮点型参数 <number>,而对 <function> 的调用需要浮点型参数

此警告意味着,格式字符串指定需要浮点数,例如,对 printf, 指定 %f 或 %g,但所传递的是非浮点数,如整数或字符串。此缺陷可能导致错误的输出;但是,在某些情况下,可能会导致系统崩溃。

示例

下面的代码生成此警告:

#include <stdio.h>
#include <string.h>

void f()
{
   char buff[5];
   int i=5;

   sprintf(buff,"%s %f","a",i); 
}

若要更正此警告,请使用 %i 来代替 %f 规范,如下面的代码所示:

#include <stdio.h>
#include <string.h>

void f()
{
   char buff[5];
   int i=5;

   sprintf(buff,"%s %i","a",i);  
}

下面的代码通过使用安全的字符串操作函数 sprintf_s 来更正此警告:

#include <stdio.h>
#include <string.h>

void f()
{
   char buff[5];
   int i=5;

   sprintf_s(buff,5,"%s %i","a",i); // safe version
}

请参见

参考

sprintf、_sprintf_l、swprintf、_swprintf_l、__swprintf_l