다음을 통해 공유


경고 C6235

('non-zero constant' || 'expression')은 항상 0이 아닌 상수입니다.

이 경고는 테스트 컨텍스트에서 발생하는 논리 또는 작업의 왼쪽에서 0이 아닌 상수 값이 검색되었음을 나타냅니다. 결과 식이 항상 true로 평가되기 때문에 논리 또는 작업의 오른쪽은 평가되지 않습니다. 이 언어 기능을 "단락 평가"라고 합니다.

설명

0이 아닌 상수 값은 비트 AND 연산자(&)가 의도되었을 수 있음을 나타냅니다. 0이 아닌 상수가 1이면 코드 경로를 선택적으로 사용하도록 설정하기 때문에 일반적인 관용구에 대해 이 경고가 생성되지 않습니다. 그러나 0이 아닌 상수가 1로 계산되면 생성됩니다. 예를 들면 다음과 같습니다 1+0.

코드 분석 이름: NONZEROLOGICALOR

예시

다음 코드는 2이므로 이 경고를 INPUT_TYPE 생성합니다.

#define INPUT_TYPE 2
void f(int n)
{
   if(INPUT_TYPE || n) //warning C6235 issued
   {
      puts("Always gets here");
   }
   else
   {
      puts("Never gets here");
   }
}

다음 코드는 비트 AND(&) 연산자를 사용하여 이 경고를 수정합니다.

#define INPUT_TYPE 2
void f(int n)
{
   if((INPUT_TYPE & n) == 2)
   {
      puts("bitwise-AND comparison true");
   }
   else
   {
      puts("bitwise-AND comparison false");
   }
}

참고 항목

C 논리 연산자