C6289
Warnung C6289: Falscher Operator: Der gegenseitige Ausschluss über || ist immer eine Konstante ungleich 0. Wollten Sie stattdessen && verwenden?
Diese Warnung gibt an, dass in einem Testausdruck eine Variable mit zwei verschiedenen Konstanten getestet wird und das Ergebnis davon abhängt, ob eine der beiden Bedingungen true ist. Die Auswertung ergibt immer true.
Dieses Problem ist in i. d. R. darauf zurückzuführen, dass || anstelle von && verwendet wird; es kann aber auch darauf zurückgeführt werden, dass != verwendet wurde, obwohl == beabsichtigt war.
Beispiel
Der folgende Code generiert diese Warnung:
void f(int x)
{
if ((x != 1) || (x != 3))
{
// code
}
}
So korrigieren Sie die Warnung unter Verwendung des folgenden Codes
void f(int x)
{
if ((x != 1) && (x != 3))
{
// code
}
}
/* or */
void f(int x)
{
if ((x == 1) || (x == 3))
{
// code
}
}