C6285
upozornění C6285: (<non-zero constant> || <non-zero constant>) je vždy nulová konstanta.Měli jste v úmyslu použít bitový operátor And?
Toto upozornění signalizuje, že jako logické argumenty byly zjištěny dvě konstantní hodnoty, i větší než 1,- nebo operace, ke kterým dochází v kontextu test.Tento výraz je vždy hodnotu TRUE.
Konstantní hodnoty větší než jedna naznačují, že argumenty logické- nebo by mohly být bitových polí.Zvažte, zda bitový operátor v tomto případě může být vhodnější operátor.
Příklad
Následující kód generuje toto upozornění:
#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 ...
}
}
Pro opravu tohoto upozornění použijte následující kód:
#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 ...
}
}