컴파일러 경고(수준 4) C4706
조건식 내의 대입
조건식의 테스트 값은 할당의 결과였습니다.
할당에는 테스트 식을 포함하여 다른 식에서 합법적으로 사용할 수 있는 값(할당 왼쪽의 값)이 있습니다.
다음 샘플에서는 C4706을 생성합니다.
// C4706a.cpp
// compile with: /W4
int main()
{
int a = 0, b = 0;
if ( a = b ) // C4706
{
}
}
테스트 조건 주위의 괄호를 두 배로 늘리더라도 경고가 발생합니다.
// C4706b.cpp
// compile with: /W4
int main()
{
int a = 0, b = 0;
if ( ( a = b ) ) // C4706
{
}
}
관계를 테스트하고 할당을 수행하지 않려는 경우 연산자를 ==
사용합니다. 예를 들어 다음 줄은 a와 b가 같은지 여부를 테스트합니다.
// C4706c.cpp
// compile with: /W4
int main()
{
int a = 0, b = 0;
if ( a == b )
{
}
}
테스트 값을 할당의 결과로 만들려는 경우 테스트하여 할당이 0이 아니거나 null이 아닌지 확인합니다. 예를 들어 다음 코드는 이 경고를 생성하지 않습니다.
// C4706d.cpp
// compile with: /W4
int main()
{
int a = 0, b = 0;
if ( ( a = b ) != 0 )
{
}
}