Freigeben über


Warnung C6285

('Nicht-Nullkonstante' || 'Nicht-Nullkonstante') ist immer eine Konstante ungleich Null. Wollten Sie den bitweisen Operator AND verwenden?

Diese Warnung gibt an, dass zwei Konstantenwerte, die beide größer als eine sind, als Argumente für einen logischen Oder Vorgang erkannt wurden, der in einem Testkontext auftritt. Dieser Ausdruck ist immer TRUE.

Hinweise

Konstantenwerte, die größer als eins sind, deuten darauf hin, dass die Argumente zu logischen oder bitbasierten Feldern gehören. Überlegen Sie, ob ein bitweiser Operator in diesem Fall ein geeigneterer Operator sein könnte.

Codeanalysename: LOGICALOROFCONSTANTS

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

So korrigieren Sie die Warnung unter Verwendung des folgenden Codes

#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

Ausdrücke mit binären Operatoren