Udostępnij za pośrednictwem


C6288

Ostrzeżenie C6288: nieprawidłowy operator: wzajemne włączenie nad && zawsze wynosi zero.Czy, zamiast tego, zamierzone było użycie || ?

To ostrzeżenie wskazuje, że w wyrażeniu testowym zmienna jest testowana na dwa różne ograniczenia i wynik zależy od obu warunków mających wartość prawda.Kod w tych przypadkach wskazuje, że intencja programisty nie została przechwycona poprawnie.Jest ważne, aby sprawdzić kod i naprawić problem; w przeciwnym razie kod nie będzie się zachowywał zgodnie z oczekiwaniami.

Przyczyną tego problemu jest zazwyczaj użycie operatora &&; w miejscu ||, ale może być także spowodowana przez użycie operatora == w miejscu, gdzie zamierzone było użycie != .

Przykład

Poniższy kod generuje to ostrzeżenie:

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

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

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

Narzędzie analizy nie ostrzega, jeśli wyrażenie powoduje efekty uboczne.