Udostępnij za pośrednictwem


Ostrzeżenie C6240

('expression' && 'non-zero constant') zawsze oblicza wynik wyrażenia. Czy zamierzasz używać operatora bitowego i

To ostrzeżenie wskazuje, że wartość stała inna niż zero została wykryta po prawej stronie operacji logicznej i wykonywanej w kontekście testowym. Na przykład wyrażenie (n && 3) zmniejsza się do (!!n)wartości , która jest wartością logiczną .n

Uwagi

To ostrzeżenie zwykle wskazuje próbę sprawdzenia maski bitowej, w której powinien być używany operator bitowy AND (&). Nie jest generowany, jeśli stała niezerowa daje wartość 1 ze względu na jego użycie do selektywnego wybierania ścieżek kodu.

Nazwa analizy kodu: LOGICALANDNONZERO

Przykład

Następujący kod generuje to ostrzeżenie:

#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");
   }
}

Aby poprawić to ostrzeżenie, użyj operatora bitowego AND, jak pokazano w poniższym kodzie:

#include <stdio.h>
#define INPUT_TYPE 2

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

Zobacz też

&, operator