Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
('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");
}
}