C6288
경고 C6288: 잘못된 연산자: &&로 상호 포함하면 언제나 0이 됩니다. ||를 사용하려고 했습니까?
이 경고는 테스트 식에서 변수가 두 개의 서로 다른 상수에 대해 테스트되며 그 결과는 두 조건 모두 true인지 여부에 따라 달라짐을 나타냅니다. 이 경우의 코드는 프로그래머의 의도가 제대로 반영되지 않았음을 나타냅니다. 코드를 검사하여 문제를 해결해야 합니다. 그렇지 않으면 코드가 예상한 대로 작동하지 않습니다.
이 문제는 일반적으로 || 대신 &&를 사용한 경우에 발생하지만 !=를 사용할 곳에 == 를 사용한 경우에도 발생할 수 있습니다.
예제
다음 코드에서는 이 경고를 발생시킵니다.
void f(int x)
{
if ((x == 1) && (x == 2)) // warning
{
// code ...
}
}
이 경고를 해결하려면 다음 코드를 사용합니다.
void f(int x)
{
if ((x == 1) || (x == 2))
{
// logic
}
/* or */
if ((x != 1) && (x != 2))
{
// code ...
}
}
식에 파생 작업이 있는 경우에는 분석 도구에서 경고하지 않습니다.