[C] que fait cette fonction ?

Fermé
pom - 11 oct. 2006 à 13:46
 pom - 12 oct. 2006 à 13:37
Bonjour, j'ai repris un code mais je ne comprends pas ce que fait cette foncion :

/*  assume 32 bit int  */
 
 typedef int int32_t;
 typedef unsigned int u_int32_t;
 
 /*  assume little endian  */
 typedef union 
 {
   double value;
   struct 
   {
     u_int32_t lsw;
     u_int32_t msw;
   } parts;
 } ieee_double_shape_type;

 
 /* Get the more significant 32 bit int from a double.  */
 
 #define GET_HIGH_WORD(i,d)                                      \
 do {                                                            \
   ieee_double_shape_type gh_u;                                  \
   gh_u.value = (d);                                             \
   (i) = gh_u.parts.msw;                                         \
} while (0)


Que veut dire
gh_u.value = (d);                                             \
   (i) = gh_u.parts.msw;   


Et si maintenant mon PC est sur 64 bits, comment modifier cette fonction ? Simplement en remplacent int32_t par int ?

Merci.

1 réponse

blarf,

au hasard, je dirais que la fonction fait :
/* Get the more significant 32 bit int from a double.  */


Si tu ne comprends pas comment elle fonctionne, je te suggère d'aller relire un tutoriel C sur les structures (et les unions).

Bon travail
0
Mon pb n'est pas dans l'utilisation des unions et structure mais dans l'algo.
0