C6285
경고 C6285: (<non-zero constant> || <non-zero constant>)은(는) 언제나 0이 아닌 상수입니다.비트 AND 연산자를 사용하려고 했습니까?
이 경고는 1보다 큰 두 상수 값이 테스트 컨텍스트에서 수행되는 논리 OR 연산에 대한 인수로 사용되고 있음이 나타냅니다.이 식은 항상 TRUE입니다.
1보다 큰 상수 값은 논리 OR에 대한 인수가 비트 필드일 수 있음을 나타냅니다.비트 연산자는 더 적절 한 연산자 이럴 수 있는지 하는 것이 좋습니다.
예제
다음 코드에서는 이 경고를 발생시킵니다.
#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 ...
}
}
이 경고를 해결하려면 다음 코드를 사용합니다.
#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 ...
}
}