Freigeben über


C6285

Warnung C6285: (<Konstante ungleich 0> || <Konstante ungleich 0>) ist immer eine Konstante ungleich 0. Wollten Sie den bitweisen Operator AND verwenden?

Diese Warnung gibt an, dass zwei konstante Werte, die beide größer als 1 sind, als Argumente einer logischen OR-Operation in einem Testkontext erkannt wurden. Dieser Ausdruck hat immer den Wert TRUE.

Konstante Werte, die größer als 1 sind, lassen den Schluss zu, dass die Argumente für die logische OR-Operation möglicherweise Bitfelder sind. Prüfen Sie, ob der bitweise Operator & in diesem Fall möglicherweise besser geeignet ist.

Beispiel

Der folgende Code generiert diese Warnung:

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

Um diese Warnung zu korrigieren, verwenden Sie den bitweisen Operator AND (&), wie im folgenden Code gezeigt:

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

Siehe auch

Referenz

Bitwise AND Operator: &

Logical OR Operator: ||