C6288

업데이트: 2007년 11월

C6288

경고 C6288: 잘못된 연산자: &&로 상호 포함하면 언제나 0이 됩니다. ||를 사용하려고 했습니까?

이 경고는 테스트 식에서 변수가 두 개의 서로 다른 상수에 대해 테스트되며 그 결과는 두 조건 모두 true인지 여부에 따라 달라짐을 나타냅니다. 이 경우의 코드는 프로그래머의 의도가 제대로 반영되지 않았음을 나타냅니다. 코드를 검사하여 문제를 해결해야 합니다. 그렇지 않으면 코드가 예상한 대로 작동하지 않습니다.

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

예제

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

void f(int x)
{
  if ((x == 1) && (x == 2)) // warning
  {
    // code ...
  }
}

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

void f(int x)
{
     if ((x == 1) || (x == 2)) 
     {
          // logic
     }
    
    /* or */
    if ((x != 1) && (x != 2))
    {
        // code ...
    }
}

식에 파생 작업이 있는 경우에는 분석 도구에서 경고하지 않습니다.