C6288
avviso C6288: Operatore errato: l'inclusione reciproca con && è sempre zero. Si intendeva utilizzare ||?
L'avviso indica che in un'espressione di test una variabile viene testata su due diverse costanti e il risultato dipende dallo stato true di entrambe le condizioni. Il codice in tali casi indica che lo scopo del programmatore non è stato acquisito correttamente. È importante esaminare il codice e risolvere il problema; in caso contrario, il codice non si comporterà nel modo previsto.
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 == 2)) // warning
{
// code ...
}
}
Per risolvere il problema, utilizzare 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.