Condividi tramite


Avviso C6288

Operatore errato: l'inclusione reciproca su && è sempre zero. L'utente intende usare || Invece?

Osservazioni:

Questo avviso indica che in un'espressione di test viene testata una variabile su due costanti diverse. Il risultato dipende da entrambe le condizioni che sono vere, che è impossibile. Il codice in questi casi indica che la finalità del programmatore non viene acquisita correttamente. È importante esaminare il codice e correggere il problema. In caso contrario, il codice non si comporterà nel modo previsto.

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

Nome dell'analisi del codice: MUTUALINCLUSIONOVERANDISFALSE

Esempio

Il codice seguente genera questo avviso:

void f(int x)
{
  if ((x == 1) && (x == 2)) // warning
  {
    // code ...
  }
}

Per correggere questo avviso, usare il codice seguente:

void f(int x)
{
     if ((x == 1) || (x == 2))
     {
          // logic
     }

    /* or */
    if ((x != 1) && (x != 2))
    {
        // code ...
    }
}

Lo strumento di analisi non avvisa se l'espressione ha effetti collaterali.