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.