Freigeben über


C6288

C6288

Warnung C6288: Falscher Operator: Der gegenseitige Einschluss über && ist immer 0 (null). Wollten Sie stattdessen || verwenden?

Diese Warnung gibt an, dass eine Variable mit zwei verschiedenen Konstanten in einem Testausdruck getestet wird und das Ergebnis davon abhängt, dass beide Bedingungen true sind. Der Code gibt in diesen Fällen an, dass die Absicht des Programmierers nicht korrekt verdeutlicht wird. Sie müssen den Code untersuchen und das Problem beheben, andernfalls verhält sich der Code nicht wie von Ihnen beabsichtigt.

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 == 2)) // warning
  {
    // code ...
  }
}

So korrigieren Sie die Warnung unter Verwendung des folgenden Codes

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

Das Analysetool gibt keine Warnung aus, wenn der Ausdruck Nebeneffekte aufweist.