Udostępnij za pośrednictwem


C6289

Ostrzeżenie C6289: nieprawidłowy operator: wzajemne wykluczenie nad || zawsze jest stałą niezerową.Czy zamiast tego, zamierzone było użycie &&?

To ostrzeżenie wskazuje, że w wyrażeniu testowym zmienna jest testowana dla dwóch różnych stałych i wynik od tego czy którykolwiek z warunków jest spełniony.Wynikiem jest zawsze true.

Przyczyną tego problemu jest zazwyczaj użycie || w miejscu &&, ale może także być spowodowany za pomocą != gdzie zamierzone było użycie == .

Przykład

Poniższy kod generuje to ostrzeżenie:

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

Aby poprawić to ostrzeżenie, należy użyć następującego kodu:

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

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