Freigeben über


C6240

Warnung C6240: (<Ausdruck> && <Konstante ungleich 0>) wird immer zum Ergebnis von <Ausdruck> ausgewertet.Wollten Sie den bitweisen Operator AND 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 Operator AND (&) 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 Operator AND, 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)