次の方法で共有


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

参照

参照

Bitwise AND Operator: &

Logical Negation Operator: !

One's Complement Operator: ~