Que pasa aqui ???

El lunes, un compañero de mi clase de POO, llego con el siguiente programa que otro compañero suyo, les enseñó y les "presumio" sus conocimientos sobre programación, por que habia ido a la reunión del reclutamiento de Microsoft HaseCorp que hubo en ESCOM.

El codigo en cuesión fue el siguiente:

/**********INICIO*********************/
#include <stdio.h>
#include <stdlib.h>

int main(){

{
int soy_la_primera = 5000;
}

{
int soy_la_segunda;
printf("%d\n",soy_la_segunda);
}

exit(0);
}
/*****************FIN*****************/

La pregunta fué: ¿Qué imprime el siguiente programa?
Después de probrarlo con mi compalero de clase, y ver los resultados, le completé mucho mejor - a mi parecer - su pregunta y fue:
¿De qué depende que imprima eso el programa?

Espero sus respuestas a las 2 preguntas, a ver si estamos deacuerdo, o no en loq ue esta pasando...

Camarras, nos vermox luego.

qBytes...

exit(WTF!!!!!);

9 comentarios:

Anónimo dijo...

1. ps imprime un numero

(si le quitamos el in soy_la_primera... corremos el programa y sale...
2!... WTF?!)

2. compilé... 5000? :S doubleWTF XD

Death Knight dijo...

Hace un tiempo (como 3 semanas XD) nuestro profe de progra nos dijo que luego había problemas con el stdin, y cuando no le asignabamos un valor a una variable se quedaba automaticamente con el último que se habia quedado en stdin, se arreglaba con un fflush(stdin) ...

Death Knight dijo...

pero en el programa no hay entradas desde el teclado!!!

Death Knight dijo...

si quitas las llaves que de

{
int soy_la_primera = 5000;
}

se imprime el valor basura que se encuentra en la variable soy_la_primera.

ñam ñam ñam ñam

Death Knight dijo...

si tratas de imprimir la primera te dice que no la declaraste....

printf("%d\n", soy_la_primera);


Error: `soy_la_primera' undeclared (first use this function)

Death Knight dijo...

solo me queda decir OMFGWTFBBQ!!!!

Death Knight dijo...

Lo que se me ocurre es que al declarar la variable dentro de los llaves ésta no existe en el main, pero al guardar una nueva variable el compilador trata de escribir sobre el la última dirección de memoria adecuada para el tipo de variable, que es la dirección de la variable que se declaro dentro de las llaves.

Rich. dijo...

No estoy seguro de que puedan usarse llaves sin algun argumento o controlador de flujo.
Dejando eso de lado, int soy_la_segunda no esta inicializada por ninguna parte, asi que probablemente imprima basura.

Luis Antonio Martínez dijo...

y al final de cuentas que pedo, alguien se atrevió a compilarlo para ver que hacia o cual era el chiste?