Condividi tramite


Avviso C6235

('costante non zero' || 'expression') è sempre una costante non zero

Questo avviso indica che un valore costante diverso da zero, diverso da uno, è stato rilevato sul lato sinistro di un'operazione o logica che si verifica in un contesto di test. Il lato destro dell'operazione o logica non viene valutato perché l'espressione risultante restituisce sempre true. Questa funzionalità del linguaggio è definita "valutazione a corto circuito".

Osservazioni:

Un valore costante diverso da zero, diverso da uno, suggerisce che l'operatore AND bit per bit (&) potrebbe essere stato previsto. Questo avviso non viene generato per il linguaggio comune quando la costante non zero è 1, a causa dell'uso per abilitare in modo selettivo i percorsi di codice. Tuttavia, viene generato se la costante non zero restituisce 1, ad esempio 1+0.

Nome dell'analisi del codice: NONZEROLOGICALOR

Esempio

Il codice seguente genera questo avviso perché INPUT_TYPE è 2:

#define INPUT_TYPE 2
void f(int n)
{
   if(INPUT_TYPE || n) //warning C6235 issued
   {
      puts("Always gets here");
   }
   else
   {
      puts("Never gets here");
   }
}

Il codice seguente usa l'operatore AND bit per bit (&) per correggere questo avviso:

#define INPUT_TYPE 2
void f(int n)
{
   if((INPUT_TYPE & n) == 2)
   {
      puts("bitwise-AND comparison true");
   }
   else
   {
      puts("bitwise-AND comparison false");
   }
}

Vedi anche

Operatori logici C