-
-
Save phaya/5e5184e01cce75473600 to your computer and use it in GitHub Desktop.
"1 < 15 < 10" algo realmente raro está pasando aquí ¿alguna idea?
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
int main() { | |
int n = 15; | |
if (1 < n < 10) { | |
printf("1 < %d < 10\n", n); | |
} | |
return 0; | |
} |
Casí, casí... La solución para arreglar el problema es correcta, pero la explicación le falta un detalle. En C puedes escribir dos condiciones seguidas sin utilizar los operadores lógicos, la prueba la tienes en el código anterior que compila y ejecuta. La nueva pregunta a responder sería ¿por qué se evalúa como verdadero 1 < 15 < 10?
Lo que pasa es que en la condicion el compilador lee primero 1<n, que es cierto y por ello retorna 1. luego lee 1<10 que tambien es cierto, por lo que la condicion es cierta
¡Tocado y hundido!
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Después de if habría que poner (1<n && n<10), ya que en c no puedes escribir dos condiciones seguidas si no están unidas por "or"(||) o por "and"(&&).