Compartir a través de


Advertencia del compilador (nivel 4) C4706

asignación en la expresión condicional

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

Una asignación posee un valor (el del lado izquierdo) que puede utilizarse correctamente en otra expresión, incluida una expresión de prueba.

El ejemplo siguiente genera el error C4706:

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

Esta advertencia se producirá si se doblan los paréntesis en torno a 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 desea realizar una asignación, utilice el operador ==.Por ejemplo, la línea siguiente prueba si a y b son iguales:

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

Si se pretende convertir el resultado de una asignación en valor de prueba, realice la prueba para demostrar que la asignación es distinta de cero o no null.Por ejemplo, el siguiente código no genera esta advertencia:

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