Compartilhar via


C6272

Aviso C6272: não float passado como argumento <número> quando float é necessário na chamada para <função>

Esse aviso indicar que a cadeia de formato especificar que um float é obrigatório, por exemplo, %f ou uma especificação de %g para printf, mas não um float como um inteiro ou a cadeia de caracteres estão sendo passados.Este defeito pode resultar na saída incorretas; no entanto, em certas circunstâncias pode conduzir a uma falha.

Exemplo

O código a seguir gera este aviso:

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

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

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

Para corrigir esse aviso, use %i em vez da especificação de %f conforme mostrado no seguinte código:

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

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

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

O código a seguir usa a função segura de manipulação de cadeia de caracteres, sprintf_s, para corrigir esse aviso:

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

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

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

Consulte também

Referência

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l