Warnung C6273
Nicht ganzzahliger Wert, der als Parameter "number" übergeben wird, wenn eine ganze Zahl im Aufruf von "function" erforderlich ist
Hinweise
Diese Warnung gibt an, dass der Formatzeichenfolgenbezeichner in einer printf
like-Funktion einen ganzzahligen Typ erwartet, aber eine nicht ganzzahlige Zahl, z. B. eine float
Zeichenfolge oder struct
stattdessen übergeben wird. Diese Warnung überprüft Ganzzahltypbezeichner wie %d
, und Breiten-/Genauigkeitsbezeichner, die ganze Zahlen wie %*.*f
. Dieser Fehler führt wahrscheinlich zu einer falschen Ausgabe.
Codeanalysename: NON_INTEGER_ARGUMENT_TO_FORMAT_FUNCTION
Beispiel
Der folgende Code generiert diese Warnung, da eine ganze Zahl anstelle einer float
in der sprintf
Funktion erforderlich ist:
#include <stdio.h>
void f_defective()
{
char buff[50];
float f=1.5;
sprintf(buff, "%d",f);
}
Der folgende Code verwendet eine ganze Zahl, um diese Warnung zu korrigieren. Alternativ konnte die Warnung korrigiert werden, indem sie den Formatbezeichner so ändert, dass er dem Typ entspricht.
#include <stdio.h>
void f_corrected()
{
char buff[50];
float f=1.5;
sprintf(buff,"%d",(int)f);
}
Der folgende Code verwendet die Funktion für sichere Zeichenfolgenmanipulation, sprintf_s
um diese Warnung zu korrigieren:
#include <stdio.h>
void f_safe()
{
char buff[50];
float f=1.5;
sprintf_s(buff,50,"%d",(int)f);
}
Diese Warnung gilt nicht für Windows 9x und Windows NT, Version 4, da %p auf diesen Plattformen nicht unterstützt wird.
Siehe auch
Syntax der Formatspezifikation: printf- und wprintf-Funktionen
sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l
C4477