C6285
avviso C6285: (<costante diversa da zero> || <costante diversa da zero>) è sempre una costante diversa da zero.Si intendeva utilizzare l'operatore AND bit per bit?
L'avviso indica che due valori di costanti, entrambi maggiori di uno, sono stati rilevati come argomenti per un'operazione di OR logico in un contesto di test.L'espressione è sempre TRUE.
Valori di costanti maggiori di uno indicano che gli argomenti per un'operazione di OR logico potrebbero essere campi di bit.Considerare se un operatore bit per bit potrebbe essere più appropriato in questo caso.
Esempio
Il codice seguente genera questo avviso:
#include <stdio.h>
#define TESTED_VALUE 0x37
#define MASK 0xaa
void f()
{
if (TESTED_VALUE || MASK)
{
puts("(TESTED_VALUE || MASK) True");
// code ...
}
else
{
puts("(TESTED_VALUE || MASK) False");
// code ...
}
}
Per risolvere il problema, utilizzare il codice seguente:
#include <stdio.h>
#define TESTED_VALUE 0x37
#define MASK 0xaa
void f(int flag)
{
if ((TESTED_VALUE & MASK)== flag)
{
puts("true");
// code ...
}
else
{
puts("false");
// code ...
}
}