Предупреждение компилятора (уровень 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 )
{
}
}
Если вы планируете сделать значение теста результатом назначения, проверьте, что назначение не равно нулю или не равно null. Например, следующий код не создаст это предупреждение:
// C4706d.cpp
// compile with: /W4
int main()
{
int a = 0, b = 0;
if ( ( a = b ) != 0 )
{
}
}