Share via


C6316

경고 C6316: 잘못된 연산자: 테스트되는 식은 상수이고 0이 아닙니다. 비트 설정 여부를 확인하려면 비트 AND를 사용하십시오.

이 경고는 비트 AND(&)를 사용해야 하는데 비트 OR(|)를 사용했음을 나타냅니다. 비트 OR는 결과 식에 비트를 추가하는 반면 비트 AND는 두 연산자 간에 공통인 비트만 선택합니다. 플래그 테스트는 비트 AND 또는 같음 테스트를 사용하여 수행해야 합니다.

예제

다음 코드에서는 이 경고를 발생시킵니다.

#define INPUT_VALUE 2
void f( int Flags)
{
  if (Flags | INPUT_VALUE) // warning
  {
    // code
  }
}

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

#define ALLOWED 1
#define INPUT_VALUE 2

void f( int Flags)
{
  if ((Flags & INPUT_VALUE) == ALLOWED)
  {
    // code
  }
}