경고 C6317
잘못된 연산자: logical-not (!)은 ones-complement(~)와 교환할 수 없습니다.
설명
이 경고는 비트 플래그일 가능성이 있는 상수에 논리 not(!
)이 적용되고 있음을 나타냅니다. 논리가 아닌 결과는 부울입니다. 비트 및 (&
) 연산자를 부울 값에 적용하는 것은 올바르지 않습니다. ones-complement(~
) 연산자를 사용하여 플래그를 대칭 이동합니다.
코드 분석 이름: NOTNOTCOMPLEMENT
예시
다음 코드는 이 경고를 생성합니다.
#define FLAGS 0x4004
void f(int i)
{
if (i & !FLAGS) // warning
{
// code
}
}
이 경고를 수정하려면 다음 코드를 사용합니다.
#define FLAGS 0x4004
void f(int i)
{
if (i & ~FLAGS)
{
// code
}
}
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기