共用方式為


C6317

警告 C6317: 不正確的運算子: 邏輯否定 (!) 與 1 補數 (~) 不能互換

這個警告表示正在將邏輯 NOT (!) 套用至可能是位元旗標的常數。 邏輯 NOT 的結果是布林 (Boolean),而將位元 AND (&) 運算子套用至布林值是不正確的。 請使用一進位補數 (~) 運算子來翻轉旗標。

範例

下列程式碼將產生出這個警告:

#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: ~