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
}
}