警告 C6273

'function' の呼び出しで整数が必要な場合に、パラメーター 'number' として渡される非整数

解説

この警告は、like 関数の printf 書式指定文字列指定子が整数型を想定しているが、代わりに 、文字列、 floatまたは struct 渡される整数以外であることを示します。 この警告チェック、次のような整数型指定子と、次のような%d整数を使用する width/precision 指定子を示します%*.*f。 この欠陥により、誤った出力が生成される可能性があります。

コード分析名: NON_INTEGER_ARGUMENT_TO_FORMAT_FUNCTION

次のコードでは、sprintf 関数で float ではなく文字列が必要なため、この警告が発生します。

#include <stdio.h>

void f_defective()
{
  char buff[50];
  float f=1.5;

  sprintf(buff, "%d",f);
}

次のコードでは、整数キャストを使用してこの警告を修正します。 または、型に一致するように書式指定子を変更することで、警告を修正することもできます。

#include <stdio.h>

void f_corrected()
{
  char buff[50];
  float f=1.5;

  sprintf(buff,"%d",(int)f);
}

次のコードでは、安全な文字列操作関数 sprintf_s を使用して、この警告を解決します。

#include <stdio.h>

void f_safe()
{
  char buff[50];
  float f=1.5;

  sprintf_s(buff,50,"%d",(int)f);
}

%p はこれらのプラットフォームでサポートされていないため、Windows 9x および Windows NT バージョン 4 ではこの警告は適用されません。

関連項目

書式指定構文: printf 関数と wprintf 関数
sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l
C4477