Avviso C6316

Operatore errato: l'espressione testata è costante e non zero. Usare bit per bit e per determinare se i bit sono impostati

Osservazioni:

Questo avviso indica l'uso di bit per bit o (|) quando deve essere stato usato bit per bit e (&). Bit per bit o aggiunge bit all'espressione risultante, mentre bit per bit seleziona solo i bit in comune tra i due operatori. I test per i flag devono essere eseguiti con bit per bit e o con un test di uguaglianza.

Nome dell'analisi del codice: INAPPROPRIATEUSEOFBITOR

Esempio

Il codice seguente genera questo avviso:

#define INPUT_VALUE 2
void f( int Flags)
{
  if (Flags | INPUT_VALUE) // warning
  {
    // code
  }
}

Per correggere questo avviso, usare il codice seguente:

#define ALLOWED 1
#define INPUT_VALUE 2

void f( int Flags)
{
  if ((Flags & INPUT_VALUE) == ALLOWED)
  {
    // code
  }
}