次の方法で共有


警告 C6317

正しくない演算子: 論理非 (!) は 1s 補数 (~) と交換できません

解説

この警告は、論理 NOT (!) が、ビット フラグとなる可能性のある定数に適用されていることを示しています。 論理非の結果はブール値です。ビットごとの演算子と (&) 演算子をブール値に適用するのは正しくありません。 フラグを反転するには、1 の補数 (~) 演算子を使用します。

コード分析名: NOTNOTCOMPLEMENT

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

#define FLAGS   0x4004

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

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

#define FLAGS   0x4004

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

関連項目