Share via


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