Udostępnij za pośrednictwem


C6285

Ostrzeżenie C6285: (<non-zero constant> || <non-zero constant>) jest zawsze stałą niezerową.Czy zamierzasz korzystać z operatora bitowego and?

To ostrzeżenie wskazuje, że dwie wartości stałych, zarówno więcej niż jeden, zostały wykryte jako argumenty funkcji logicznych- lub operację wykonywaną w kontekście badania.Wyrażenie to jest zawsze PRAWDZIWE.

Stała wartości większej niż jeden sugerują, że argument funkcji logicznych- lub może być pól bitowych.Należy rozważyć, czy bitowe operator może być bardziej odpowiedni operator w tym przypadku.

Przykład

Poniższy kod generuje to ostrzeżenie:

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

Aby poprawić to ostrzeżenie, należy użyć następującego kodu:

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

Zobacz też

Informacje

Wyrażenia z operatory dwuargumentowe