Share via


C6240

업데이트: 2007년 11월

C6240

경고 C6240: (<expression> && <non-zero constant>)은(는) 언제나 <expression>의 결과로 평가됩니다. 비트 AND 연산자를 사용하려고 했습니까?

이 경고는 테스트 컨텍스트에서 수행되는 논리 AND 연산의 오른쪽에 1 이외의 0이 아닌 상수 값이 있음을 나타냅니다. 예를 들어, (n && 3) 식은 n의 부울 값인 (!!n)으로 줄어듭니다.

이 경고는 일반적으로 비트 AND(&) 연산자를 사용해야 하는 비트 마스크를 검사하려고 했음을 나타냅니다. 0이 아닌 상수가 코드 경로를 선택하는 데 사용되기 때문에 1로 평가되는 경우에는 이 경고가 생성되지 않습니다.

예제

다음 코드에서는 이 경고를 발생시킵니다.

#include <stdio.h>
#define INPUT_TYPE 2

void f(int n)
{
   if (n && INPUT_TYPE) 
   {
      puts("boolean value of !!n is true");
   }
   else
   {
      puts("boolean value of !!n is false");
   }
}

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

#include <stdio.h>
#define INPUT_TYPE 2

void f(int n)
{
   if ( (n & INPUT_TYPE) )
   {
      puts("bitmask true");
   }
   else
   {
      puts("bitmak false");
   }
}

참고 항목

참조

& 연산자(C# 참조)