次の方法で共有


C6316

警告 C6316: 不適切な演算子です: テストされた式は、定数であり、0 ではありません。 ビットが設定されたかどうかを決定するには、ビットごとの and を使用してください。

この警告は、ビットごとの OR (|) が、ビットごとの AND (&) を使用する必要がある場合に使用されていることを示しています。 ビットごとの OR では結果の式にビットが追加されますが、ビットごとの AND では、2 つの演算子に共通するビットだけが選択されます。 ビットごとの AND または等しいかどうかのテストを使用して、フラグのテストを実行する必要があります。

使用例

この警告が発生するコード例を次に示します。

#define INPUT_VALUE 2
void f( int Flags)
{
  if (Flags | INPUT_VALUE) // warning
  {
    // code
  }
}

この警告を解決するには、次のコードを使用します。

#define ALLOWED 1
#define INPUT_VALUE 2

void f( int Flags)
{
  if ((Flags & INPUT_VALUE) == ALLOWED)
  {
    // code
  }
}