Condividi tramite


Avviso C6289

Operatore errato: l'esclusione reciproca su || è sempre una costante non zero. Hai invece intenzione di usare && ?

Osservazioni:

Questo avviso indica che in un'espressione di test viene testata una variabile come diversa da due costanti diverse. Il risultato dipende da una condizione vera, ma restituisce sempre true.

Questo problema è spesso causato dall'uso || al posto di &&, ma può anche essere causato dall'uso di != dove == era previsto.

Nome dell'analisi del codice: MUTUALEXCLUSIONOVERORISTRUE

Esempio

Il codice seguente genera questo avviso:

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

Per correggere questo avviso, usare il codice seguente:

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

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