Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
('costante non zero' && 'expression') restituisce sempre il risultato di 'expression'. Si intende usare l'operatore bit per bit e ?
Osservazioni:
Questo avviso indica che un valore costante diverso da zero, diverso da uno, è stato rilevato sul lato sinistro di un'operazione AND logica che si verifica in un contesto di test. Ad esempio, l'espressione ( 2 && n ) viene ridotta a (!!n), ovvero il valore booleano di n.
Questo avviso indica in genere un tentativo di controllare una maschera di bit in cui deve essere usato l'operatore AND (&) bit per bit e non viene generato se la costante non zero restituisce 1 a causa dell'uso per la scelta selettiva dei percorsi di codice.
Nome dell'analisi del codice: NONZEROLOGICALAND
Esempio
Il codice seguente genera questo avviso:
#include <stdio.h>
#define INPUT_TYPE 2
void f( int n )
{
if(INPUT_TYPE && n) // warning C6239
{
puts("boolean value of n is true");
}
else
{
puts("boolean value of n is false");
}
}
Per correggere questo avviso, usare l'operatore AND bit per bit (&) come illustrato nel codice seguente:
#include <stdio.h>
#define INPUT_TYPE 2
void f( int n )
{
if( ( INPUT_TYPE & n ) )
{
puts("bitmask true");
}
else
{
puts("bitmask false");
}
}