C progtwig fácil no funciona – “si”

Intenté escribir un progtwig fácil que compara 3 números e imprime el mayor de ellos, pero sigue imprimiendo los 3 y no entiendo por qué. Ese es mi código:

#include  int main() { int x = 10; int y = 8; int z = 3; if((x > y) && (x > z)); { printf("%d",x); } if((y > x) && (y > z)); { printf("%d",y); } if((z > x) && (z > y)); { printf("%d",z); } return 0; } 

¡Gracias por la ayuda!

Elimine el punto y coma al final de cada instrucción if. Eso hace que la instrucción if ejecute la instrucción nula (;) y luego ejecute una instrucción de locking {printf (…); }

 #include  int main() { int x = 10; int y = 8; int z = 3; if((x > y) && (x > z)) { printf("%d",x); } if((y > x) && (y > z)) { printf("%d",y); } if((z > x) && (z > y)) { printf("%d",z); } return 0; } 

Debería usar else, debería eliminar los puntos y coma después de las instrucciones if, los puntos y coma después de ifs significa que el cuerpo de if está vacío y el rest es un bloque de código normal

 #include  int main() { int x = 10; int y = 8; int z = 3; if((x > y) && (x > z)) { printf("%d",x); } else { // Will not make difference in this particular case as your conditions cannot overlap if((y > x) && (y > z)) { printf("%d",y); } else { // Will not make difference in this particular case as your conditions cannot overlap if((z > x) && (z > y)) { printf("%d",z); } } } return 0; } 

Tienes un punto y coma después de tu condición if :

 if((x > y) && (x > z)); 

El punto y coma toma el lugar del bloque o la instrucción que se ejecutará cuando la condición sea verdadera. Es como si hubieras escrito:

 if((x > y) && (x > z)) { ; } { printf("%d",x); } 

Esperemos que pueda ver cómo esto ejecutará la statement de impresión incondicionalmente.

La respuesta a su pregunta se basa únicamente en el conocimiento del uso de punto y coma en C y la syntax de la instrucción if .

Para obtener más información, lea el punto y coma y comprenda claramente la syntax de if .

La lógica es más simple si usa una variable adicional para el máximo

 #include  int main() { int x,y,z, max; scanf ("%d", &x); max = x; scanf ("%d", &y); if (y > max) max = y; scanf ("%d", &z); if (z > max) max = z; printf ("max = %d", max); return 0; }