Skip to content

Instantly share code, notes, and snippets.

@phaya phaya/ifless.c Secret
Last active Dec 25, 2015

Embed
What would you like to do?
"1 < 15 < 10" algo realmente raro está pasando aquí ¿alguna idea?
#include <stdio.h>
int main() {
int n = 15;
if (1 < n < 10) {
printf("1 < %d < 10\n", n);
}
return 0;
}
@ArturoBlazquez

This comment has been minimized.

Copy link

ArturoBlazquez commented Oct 13, 2013

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"(&&).

@phaya

This comment has been minimized.

Copy link
Owner Author

phaya commented Oct 14, 2013

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?

@javierdarna

This comment has been minimized.

Copy link

javierdarna commented Oct 17, 2013

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

@phaya

This comment has been minimized.

Copy link
Owner Author

phaya commented Oct 18, 2013

¡Tocado y hundido!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.