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