Поделиться через


Предупреждение компилятора (уровень 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 )
   {
   }
}