Condividi tramite


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

Vedere anche

Riferimenti

Espressioni con gli operatori binari