Condividi tramite


C6235

avviso C6235: (<costante diversa da zero> || <espressione>) è sempre una costante diversa da zero

L'avviso indica che un valore di costante diverso da zero e che non sia uno è stato rilevato a sinistra di un'operazione di OR logico in un contesto di test. Il lato a destra dell'operazione di OR logico non viene valutato in quanto l'espressione risultante restituisce sempre true. Questa condizione viene denominata anche "valutazione short circuit".

Un valore di costante diverso da zero e che non sia uno indica che è possibile che sia stato previsto l'operatore AND bit per bit (&). L'avviso non viene generato per il linguaggio comune quando la costante diversa da zero è 1 a causa del relativo utilizzo per l'attivazione selettiva dei percorsi del codice, ma viene generato se la costante diversa da zero restituisce 1, ad esempio 1+0.

Esempio

Il codice seguente genera questo avviso in quanto 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");
   }
}

Per risolvere il problema, nel codice riportato di seguito viene utilizzato l'operatore AND bit per bit (&):

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

Vedere anche

Riferimenti

C Logical Operators