C6313
更新 : 2007 年 11 月
警告 C6313: 不適切な演算子です: 0 値のフラグをビットごとの and と共にテストすることはできません。0 値のフラグをチェックするには、等値テストを使用してください
この警告は、テスト コンテキストで、定数値 0 がビットごとの AND (&) 演算子に対して引数として指定されたことを示します。結果の式は定数であり、false に評価され、結果は意図したものと異なります。
これは、通常、ビットごとの AND 演算子を使用して値 0 を持つフラグをテストしたときに発生します。値が 0 のフラグをテストするには、たとえば、== や != を使用して、等価テストを実行する必要があります。
使用例
この警告が発生するコード例を次に示します。
#define FLAG 0
void f(int Flags )
{
if (Flags & FLAG)
{
// code
}
}
この警告を解決するには、次のコードを使用します。
#define FLAG 0
void f(int Flags )
{
if (Flags == FLAG)
{
// code
}
}