다음을 통해 공유


경고 C6288

잘못된 연산자: &>에 대한 상호 포함은 항상 0입니다. ||을(를) 사용하려고 했나요? 대신?

설명

이 경고는 테스트 식에서 변수가 서로 다른 두 상수에 대해 테스트되고 있음을 나타냅니다. 결과는 두 조건 모두에 따라 달라지며 이는 불가능합니다. 이러한 경우 코드는 프로그래머의 의도가 올바르게 캡처되지 않음을 나타냅니다. 코드를 검사하고 문제를 해결하는 것이 중요합니다. 그렇지 않으면 코드가 예상대로 동작하지 않습니다.

이 문제는 종종 사용 하 여 &&발생 ; 대신||, 하지만 또한 의도 된 위치를 != 사용 하 여 == 발생할 수 있습니다.

코드 분석 이름: MUTUALINCLUSIONOVERANDISFALSE

예시

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

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 ...
    }
}

분석 도구는 식에 부작용이 있는지 경고하지 않습니다.