Freigeben über


C6240

Aktualisiert: November 2007

C6240

Warnung C6240: (<Konstante ungleich 0> && <Ausdruck>) wird immer zum Ergebnis von <Ausdruck> ausgewertet. Wollten Sie den bitweisen AND-Operator verwenden?

Diese Warnung gibt an, dass in einem Testkontext auf der rechten Seite einer logischen AND-Operation ein Konstantenwert ungleich 0 (null) ermittelt wurde, der nicht 1 ist. Der Ausdruck (n && 3) wird z. B. auf (!!n) reduziert, den booleschen Wert von n.

Diese Warnung gibt i. d. R. an, dass versucht wird, eine Bitmaske zu prüfen, in der der bitweise AND-Operator (&) verwendet werden sollte. Sie wird aufgrund der Verwendung für das selektive Auswählen von Codepfaden nicht generiert, wenn die Konstante ungleich 0 (null) zum Wert 1 ausgewertet wird.

Beispiel

Der folgende Code generiert diese Warnung:

#include <stdio.h>
#define INPUT_TYPE 2

void f(int n)
{
   if (n && INPUT_TYPE) 
   {
      puts("boolean value of !!n is true");
   }
   else
   {
      puts("boolean value of !!n is false");
   }
}

Um diese Warnung zu korrigieren, verwenden Sie den bitweisen AND-Operator, wie im folgenden Code gezeigt:

#include <stdio.h>
#define INPUT_TYPE 2

void f(int n)
{
   if ( (n & INPUT_TYPE) )
   {
      puts("bitmask true");
   }
   else
   {
      puts("bitmak false");
   }
}

Siehe auch

Referenz

Operator & (C#-Referenz)