Share via


Advertencia del compilador (nivel 4) C4706

asignación en la expresión condicional

El valor de prueba en una expresión condicional era el resultado de una asignación.

Una asignación tiene un valor (el valor del lado izquierdo de la asignación) que se puede usar lícitamente en otra expresión, incluida una expresión de prueba.

En el ejemplo siguiente se genera C4706:

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

La advertencia se producirá incluso si duplica los paréntesis alrededor de la condición de prueba:

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

Si su intención es probar una relación y no realizar una asignación, use el operador ==. Por ejemplo, la línea siguiente comprueba si a y b son iguales:

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

Si piensa convertir el valor de prueba en el resultado de una asignación, pruebe para asegurarse de que la asignación no sea cero ni null. Por ejemplo, el código siguiente no generará esta advertencia:

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