Freigeben über


C6239

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

Diese Warnung gibt an, dass in einem Testkontext auf der linken Seite einer logischen AND-Operation ein Konstantenwert ungleich 0 (null) ermittelt wurde, der nicht 1 ist.Der Ausdruck ( 2 && n ) 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(INPUT_TYPE && n) // warning 6239
   {
      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( ( INPUT_TYPE & n ) )
   {
      puts("bitmask true");
   }
   else
   {
      puts("bitmask false");
   }
}

Siehe auch

Referenz

Operator & (C#-Referenz)