C6239
Aktualisiert: November 2007
C6239
Warnung C6239: (<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 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 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(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 AND-Operator (&), 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");
}
}