Freigeben über


C6289

Aktualisiert: November 2007

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