次の方法で共有


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
  }
}