次の方法で共有


C6317

警告 C6317: 不適切な演算子です: 論理否定演算子は 1 の補数演算子 (~) と代替できません

この警告は、ビットフラグになると思われる定数に論理否定演算子 (!) が適用されることを示します。論理否定演算子の結果はブール型です。ビットごとの AND (&) 演算子をブール値に適用することは不適切です。1 の補数演算子 (~) を使用して、フラグを反転します。

使用例

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

#define FLAGS   0x4004

void f(int i)
{
  if (i & !FLAGS) // warning
  { 
    // code
  }
}

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

#define FLAGS   0x4004

void f(int i)
{
  if (i & ~FLAGS)
  {
    // code
  }
}

参照

関連項目

ビットごとの AND 演算子: と

論理否定演算子: !

補完演算子: |