警告 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
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示