Avviso C6317
Operatore errato: logical-not (!) non è intercambiabile con one-complement (~)
Osservazioni:
Questo avviso indica che viene applicato un valore logico diverso da (!
) a una costante che è probabile che sia un flag di bit. Il risultato di logical-not è booleano; non è corretto applicare l'operatore bit per bit e (&
) a un valore booleano. Usare l'operatore ones-complement (~
) per capovolgere i flag.
Nome dell'analisi del codice: NOTNOTCOMPLEMENT
Esempio
Il codice seguente genera questo avviso:
#define FLAGS 0x4004
void f(int i)
{
if (i & !FLAGS) // warning
{
// code
}
}
Per correggere questo avviso, usare il codice seguente:
#define FLAGS 0x4004
void f(int i)
{
if (i & ~FLAGS)
{
// code
}
}
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