Condividi tramite


C6289

avviso C6289: Operatore errato: l'esclusione reciproca con || è sempre una costante diversa da zero. Si intendeva utilizzare &&?

Questo avviso indica che in un'espressione di test una variabile viene testata su due diverse costanti e il risultato varia a seconda che sia true una o l'altra condizione. Viene sempre restituita una condizione true.

In genere il problema è causato dall'utilizzo di || in luogo di &&, ma può anche essere causato dall'utilizzo di != laddove era previsto ==.

Esempio

Il codice seguente genera questo avviso:

void f(int x)
{
  if ((x != 1) || (x != 3))
  {
    // code 
  }
}

Per risolvere il problema, utilizzare il codice seguente:

void f(int x)
{
  if ((x != 1) && (x != 3))
  {
    // code 
  }
}

/* or */
void f(int x)
{
  if ((x == 1) || (x == 3))
  {
    // code 
  }
}