L'endianness (boutiennte selon les membres de l'academie de fclc) n'a rien
a faire avec le C. C'est une issue lie au systeme (proceseur). Si tu ecris
du code normal tu n'as pas en t'en preocuper et c'est bien ainsi car ton
programme est portable.
Laisse moi expliquer quand meme. Prend une machine avec des char d'un octet
(cad qu'il y a 8 bit dans un char, CHAR_BIT=8) et des entiers de deux chars
(16 bit). Si dans la memoire tu as deux octets consecutifs contenant 0x01
et 0x02 et que tu interprete ces deux octets comme un int, selon
l'endianness tu obtiens soit 0x0102 ou 0x0201...
Tobias.
> dans certains manuels de programmation il est question de little endian
> et big endian. que signifie ces termes et quelle est leur raison d'être
> dans l'apprentissage de la programmation en C ?
Aucune raison. C'est un problème d'architecture. Certains micros stockent
les mots de 16 bits avec les bits poids fort à l'adresse basse, d'autres
à l'adresse haute. Pour les objets 32 bits, il y a 4 possibilités... tous
ces détails ne concernent pas le langage C en tant que tel. Par contre, si
on doit échanger des données binaires entre machines, la question peut se
poser.
--
-ed- emdel at noos.fr
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
C-library: http://www.dinkumware.com/htm_cl/index.html
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
Aucune si tu ne fais d'échanges d'entiers (16/32/64 bits), que ce
soit par fichiers, pipes ou sockets. En gros, tant que tu
n'utilises pas ton entier en dehors de ton programme.
Pour mourir moins con, imaginons l'entier 16 bits suivant:
1110101001101110
il est compsé de 2 octets:
l'octet fort: B1 = 11101010
l'octet faible: B0 = 01101110
En big-endian, l'ordinateur représente en mémoire l'entier avec
l'octet de poids fort en premier, donc B1B0. En little-endian,
l'ordinateur représente en mémoire l'entier avec l'octet de poids
faible en premier, donc B0B1.
Donc, si tu stockes un entier dans un fichier, et que tu le
ré-ouvres ensuite, tu dois savoir quelle était sa configuration
en mémoire. Pour le réseau, il existe des fonctions comme htonl
(host to network long) qui te permettent d'oublier ton
architecture quand tu échanges des entiers entre 2 machines.
Encore une fois, pour apprendre le C, c'est pas vital, mais dés
que tu lis/écris dans un fichier, ou que tu échanges des données
entre programmes, cela peut prendre une certaine importance.
--
Simon ARNAUD
aka Maz