영어로 읽기

다음을 통해 공유


경고 C6239

('non-zero constant' && 'expression')은 항상 'expression'의 결과로 계산됩니다. 비트 및 연산자를 사용하시겠습니까?

이 경고는 테스트 컨텍스트에서 발생하는 논리 AND 작업의 왼쪽에서 0이 아닌 상수 값이 검색되었음을 나타냅니다. 예를 들어 식 ( 2 && n ) 은 부울 값n인 으로 축소(!!n)됩니다.

설명

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

코드 분석 이름: NONZEROLOGICALAND

예시

다음 코드는 이 경고를 생성합니다.

#include <stdio.h>
#define INPUT_TYPE 2
void f( int n )
{
   if(INPUT_TYPE && n) // warning C6239
   {
      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( ( INPUT_TYPE & n ) )
   {
      puts("bitmask true");
   }
   else
   {
      puts("bitmask false");
   }
}

참고 항목

& 연산자