Condividi tramite


C6313

avviso C6313: Operatore errato: impossibile testare un flag con valore zero con AND bit per bit. Utilizzare un test di uguaglianza per verificare i flag con valore zero

L'avviso indica che un valore costante pari a zero è stato fornito come argomento all'operatore AND bit per bit (&) in un contesto di test. L'espressione risultante è costante e restituisce un valore false. Il risultato è diverso da quello stabilito.

Questa condizione di solito è determinata dall'utilizzo dell'operatore AND bit per bit per eseguire un test su un flag con valore zero. Per eseguire un test di flag con valore zero è necessario eseguire un test di uguaglianza utilizzando ad esempio == o !=.

Esempio

Il codice seguente genera questo avviso:

#define FLAG 0

void f(int Flags )
{
  if (Flags & FLAG)
  {
    // code
  }
}

Per risolvere il problema, utilizzare il codice seguente:

#define FLAG 0

void f(int Flags )
{
  if (Flags == FLAG)
  {
    // code
  }
}