Avviso C6236
('expression' || 'costante non zero') è sempre una costante non zero
Questo avviso indica che un valore costante diverso da zero, diverso da uno, è stato rilevato sul lato destro di un'operazione OR logica che si verifica in un contesto di test. Logicamente, implica che il test è ridondante e può essere rimosso in modo sicuro. In alternativa, suggerisce che il programmatore potrebbe avere intenzione di usare un operatore diverso, ad esempio l'uguaglianza (==
), l'operatore AND bit per bit () o XOR bit&
per bit (^
) per testare un valore o un flag specifico.
Osservazioni:
Questo avviso non viene generato per il linguaggio comune quando la costante non zero è 1, a causa del relativo uso per abilitare in modo selettivo i percorsi di codice in fase di compilazione. Tuttavia, l'avviso viene generato se la costante non zero è formata da un'espressione che restituisce 1, ad esempio 1 + 0.
Nome dell'analisi del codice: LOGICALORNONZERO
Esempio
Questo codice mostra come può essere visualizzato l'avviso C6236. Poiché INPUT_TYPE
non è 0, l'espressione n || INPUT_TYPE
è sempre diversa da zero e la else
clausola non viene mai eseguita. Tuttavia, INPUT_TYPE
è una costante con un valore diverso da uno, che suggerisce che è un valore per il confronto:
#define INPUT_TYPE 2
#include <stdio.h>
void f( int n )
{
if ( n || INPUT_TYPE ) // analysis warning C6236
{
puts( "Always gets here" );
}
else
{
puts( "Never enters here" );
}
}
Il codice seguente usa invece un operatore AND bit per bit (&
) per verificare se il INPUT_TYPE
bit del parametro n
di input è impostato:
#define INPUT_TYPE 2
#include <stdio.h>
void f( int n )
{
if ( n & INPUT_TYPE ) // no warning
{
puts( "Bitwise-AND comparison is true" );
}
else
{
puts( "Bitwise-AND comparison is 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