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