2010-08-04 4 views
2

Quel sera le comportement et la sortie du code suivant si je le code produit par inadvertance en C/C++,quel sera le comportement de l'extrait de code suivant?

float a = 12.5; 
printf("%d\n", a); 
printf("%d\n", *(int *)&a); 
+6

Deux mots: comportement indéterminé –

+2

Le point de curiosité est de l'essayer * intentionnellement * et voir ce qui se passe :) –

+0

@Nikolai: mais essayez-le sur plus d'une plate-forme (de préférence avec différents endianness ou différents sizeof (int)) –

Répondre

7

Rubish et plus rubish.

Vous obtiendrez quelque chose de significatif si vous avez les éléments suivants si

printf("%d\n", (int)a); 
+2

+1 pour l'humour involontaire. :-) –

+0

@Paul R: Comment avez-vous su que c'était involontaire? Ne dis pas que ça ne te dérange pas. – torak

+0

@torak: excuses si c'était intentionnel - je pensais que c'était probablement juste une faute de frappe qui s'est avérée être assez drôle et pertinent. :-) –

0

sa non définie, car ANSI ne définit pas une relation entre sizeof (int) et sizeof (float).