컴파일러 경고(수준 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 )
   {
   }
}