C/Visual C - ¿Qué pasa si en un if usamos un operador de asignación?

 
Vista:

¿Qué pasa si en un if usamos un operador de asignación?

Publicado por María (1 intervención) el 09/12/2017 20:34:03
Buenas a todos!!
Esta es mi primera duda en este foro. Estoy iniciándome en el mundillo de la programación debido a la carrera que estudio y por pura devoción. Mi duda es la misma que la del título. ¿Qué ocurre si escribimos un operador de asignación en un if?
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
int main() {
int var1 = 0;
int var2 = 0;
int *p1 = &var1;
int *p2 = &var2;
if(*p1 = var2)
printf("var1 y var2 son iguales");
else if ( *p2 != var1)
printf("var1 y var2 tienen valores distintos");
return 0;
}

Por ejemplo en este sencillo código, no se imprime nada al compilar y ejecutar. Sin embargo en otros casos, el primer if siempre se cumple, ya que sean o no iguales los valores, la primera variable adopta inmediatamente el valor de la otra, y por tanto ejecuta las sentencias correspondientes.

Muchas gracias :))
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

¿Qué pasa si en un if usamos un operador de asignación?

Publicado por Tom (619 intervenciones) el 09/12/2017 20:58:45
Es un fallo peligroso. Se realiza la asignación y el resultado (el valor de la variable destino) se evalúa como false (0) o true(!= 0).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Pierre

¿Qué pasa si en un if usamos un operador de asignación?

Publicado por Pierre (1 intervención) el 03/03/2018 19:30:39
En el primer condicional evaluas el resultado de la asignacion. Como el resultado es cero, lo debes tomar como un boleano false. Por tanto no entras en el if...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar