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


Предупреждение компилятора (уровень 4) C4706

назначение, используемое в качестве условия

Значение теста в условном выражении является результатом назначения.

Назначение имеет значение (значение слева от назначения), которое может использоваться юридически в другом выражении, включая тестовое выражение.

Следующий пример вызывает C4706.

// compile with: /W4
int main()
{
   int a = 0, b = 0;
   if (a = b) // C4706
   {
   }
}

Отключите предупреждение с помощью выражения (()). Например:

// compile with: /W4
int main()
{
   int a = 0, b = 0;
   if ((a = b)) // No warning
   {
   }
}

Если вы намерены проверить условие, а не сделать присваивание, используйте оператор ==. Например, следующие тесты, равны ли a и b:

// compile with: /W4
int main()
{
   int a = 0, b = 0;
   if (a == b)
   {
   }
}

Если вы планируете сделать значение теста результатом назначения, проверьте, что назначение не равно нулю или не равно null. Например, следующий код не создает это предупреждение:

// compile with: /W4
int main()
{
   int a = 0, b = 0;
   if ((a = b) != 0)
   {
   }
}