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
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per