Freigeben über


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 floatZeichenfolge 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_sum 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