viernes, 28 de octubre de 2011

¿Porque 2+2=5928 en C?

este ejemplo lo consegui del libro Practical C Programming y aqui les traigo este curioso ejemplo el cual puede variar dependiendo del compilador que utilicen, yo use el Dev C++ y aunque no me salio 5928 como el libro :( si me salio otro resultado distinto, pueden probar este codigo que ven a continuacion:
using namespace std;
int answer;
int main()
{
    answer=2 + 2;
    printf("The answer is %d\n");
    return 0;           
}
aunque este ejemplo lo pusieron como pregunta prouesta, la explicacion que dieron es que la declaracion printf
printf("The answer is %d\n");
le dice al programa que imprima un un numero decimal, pero como ven la variable answer no esta especificada. C no comprueba si printf recibe el numero correcto de parametros. Y como no hay valor especificado, C crea uno. para que imprima correctamente se debe cambiar asi:
printf("The answer is %d\n");
y tendremos esto:

1 comentario:

  1. Excellent post.This was actually what I was looking for, and I am glad that I finally came here! Thanks for sharing the such information with us.

    ResponderEliminar