경고 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");
}
}
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기