다음을 통해 공유


경고 C6317

잘못된 연산자: logical-not (!)은 ones-complement(~)와 교환할 수 없습니다.

설명

이 경고는 비트 플래그일 가능성이 있는 상수에 논리 not(!)이 적용되고 있음을 나타냅니다. 논리가 아닌 결과는 부울입니다. 비트 및 (&) 연산자를 부울 값에 적용하는 것은 올바르지 않습니다. ones-complement(~) 연산자를 사용하여 플래그를 대칭 이동합니다.

코드 분석 이름: NOTNOTCOMPLEMENT

예시

다음 코드는 이 경고를 생성합니다.

#define FLAGS   0x4004

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

이 경고를 수정하려면 다음 코드를 사용합니다.

#define FLAGS   0x4004

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

참고 항목