Condividi tramite


Avviso C6285

('costante non zero' || 'costante non zero') è sempre una costante non zero. Si intende usare l'operatore bit per bit e ?

Questo avviso indica che due valori costanti, entrambi maggiori di uno, sono stati rilevati come argomenti per un'operazione o logica che si verifica in un contesto di test. Questa espressione è sempre TRUE.

Osservazioni:

I valori costanti maggiori di uno suggeriscono che gli argomenti per i campi logici o possono essere di bit. Valutare se in un caso come questo potrebbe essere più appropriato un operatore bit per bit.

Nome dell'analisi del codice: LOGICALOROFCONSTANTS

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 correggere questo avviso, usare 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 ...
  }
}

Vedi anche

Espressioni con operatori binari