C6235
Ostrzeżenie C6235: (< niezerowa stała > || <expression>) jest zawsze stałą niezerową
To ostrzeżenie wskazuje, że na lewej stronie logicznych wykryto niezerową wartość stałą, inne niż jeden,- lub operacji, która występuje w kontekście badania.Po prawej stronie logicznej- lub operacja nie jest oceniane, ponieważ wynikowy zawsze wyrażenie ma wartość PRAWDA.To jest określone jako "zwarcie oceny".
Niezerowa wartość stałą, inne niż jeden, sugeruje, że operatory- I operator (&) zostały przeznaczone.To ostrzeżenie nie zostanie wygenerowany wspólnej idiom gdy stała zera jest 1, z uwagi na jej wykorzystanie selektywnego włączania ścieżek kodu, ale jest generowany w przypadku wynikiem jest stałą niezerową 1, na przykład 1 + 0.
Przykład
Poniższy kod generuje to ostrzeżenie, ponieważ INPUT_TYPE 2:
#define INPUT_TYPE 2
void f(int n)
{
if(INPUT_TYPE || n) //warning 6235 issued
{
puts("Always gets here");
}
else
{
puts("Never gets here");
}
}
W poniższym kodzie użyto operatory- I (&) operator, aby poprawić to ostrzeżenie:
#define INPUT_TYPE 2
void f(int n)
{
if((INPUT_TYPE & n) == 2)
{
puts("bitwise-AND comparison true");
}
else
{
puts("bitwise-AND comparison false");
}
}