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