Idéalement le code suivant prendrait un flotteur dans la représentation IEEE 754 et le convertir en hexadécimalConvertir ieee 754 flotteur ensorceler avec c - printf
void convert() //gets the float input from user and turns it into hexadecimal
{
float f;
printf("Enter float: ");
scanf("%f", &f);
printf("hex is %x", f);
}
Je ne suis pas sûr de ce qui va mal. Il convertit le nombre en un nombre hexadécimal, mais un très mauvais.
123.1443 gives 40000000
43.3 gives 60000000
8 gives 0
donc c'est en train de faire quelque chose, je ne suis pas très sûr de quoi.
aide serait appréciée
«float» est promu à «double» dans les fonctions variadiques (voir la réponse de James McNellis). Essayez 'printf (" hex est% lx ", f);' à la place. Pour le code portable, regardez sizeof (double) par rapport à sizeof (int) et sizeof (long) pour déterminer s'il faut utiliser 'x' ou' lx'. – tomlogic
Comment savez-vous que c'est IEEE 754? –
@tomlogic: Pour le code portable, ne pas passer une valeur à virgule flottante 'printf' avec un format qui nécessite un entier. Le comportement n'est pas défini, même si les tailles correspondent. (Ne pas demander.) –