Udostępnij za pośrednictwem


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

Zobacz też

Informacje

C operatory logiczne