Share via


C6285

업데이트: 2007년 11월

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

이 경고를 해결하려면 다음 코드에서처럼 비트 AND(&) 연산자를 사용합니다.

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

참고 항목

참조

Bitwise AND Operator: &

Logical OR Operator: ||

컴파일러 경고(수준 4) C4127