C6281

Avviso 6281: ordine errato delle operazioni: gli operatori relazionali hanno precedenza maggiore degli operatori bit per bit

L'avviso indica un possibile errore nella precedenza degli operatori,che potrebbe produrre risultati non corretti.Per chiarire lo scopo, è necessario controllare la precedenza e utilizzare le parentesi.Gli operatori relazionali (<, >, <=, >=, ==, != ) hanno una precedenza più alta rispetto agli operatori bit per bit (& | ^).

Esempio

Il codice seguente genera questo avviso:

#include <stdlib.h>
#define FORMAT 1
#define TYPE 2

void f(int input)
{
  if (FORMAT & TYPE != input)
  {
    // code...
  }
}

Per risolvere il problema, nel codice seguente vengono utilizzate le parentesi:

#include <stdlib.h>
#define FORMAT 1
#define TYPE 2

void f(int input)
{
  if ((FORMAT & TYPE) != input)
  {
    // code...
  }
}

Vedere anche

Riferimenti

Avviso del compilatore (livello 3) C4554