Condividi tramite


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