Share via


C6289

경고 C6289: 잘못된 연산자: ||로 상호 제외하면 언제나 0이 아닌 상수가 됩니다. &&를 사용하려고 했습니까?

이 경고는 테스트 식에서 변수가 두 개의 서로 다른 상수에 대해 테스트되며 그 결과는 조건 중 하나가 true인지에 따라 달라짐을 나타냅니다. 여기에서는 항상 true가 됩니다.

이 문제는 일반적으로 && 대신 ||를 사용한 경우에 발생하지만 ==를 사용할 곳에 !=를 사용한 경우에도 발생할 수 있습니다.

예제

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

void f(int x)
{
  if ((x != 1) || (x != 3))
  {
    // code 
  }
}

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

void f(int x)
{
  if ((x != 1) && (x != 3))
  {
    // code 
  }
}

/* or */
void f(int x)
{
  if ((x == 1) || (x == 3))
  {
    // code 
  }
}