Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 AND einen aussagekräftigen Operator in diesem Fall 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 ...
}
}
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 ...
}
}