[...] tu ne vas toucher que le nombre de bits spécifiés, donc si tu affecte une valeur à la partie basse tu ne changes que la partie basse.
[...] ça peut vite être ... dangereux et le bordel aussi
C'est déjà le bordel, à cause de l' "endianness", le fait que quand on code une quantité de 16 bits sur 2 octets, le premier octet est soit la partie haute (les 8 bits de poids fort), soit la partie basse.
Ici, si ça touche la partie basse, c'est que tu es sur une machine d'architecture "little-endian" comme le x86.L'adresse de la donnée sur 16 bits est l'adresse de l'octet de partie basse, puisqu'il vient avant l'autre.
Ca toucherait la partie haute sur d'autres machines (Sparc, Motorola 68k,...). Autrement dit, le code n'est pas portable, si _l'intention_ était de toucher la partie basse. Donc c'est le bordel.
Ici, si ça touche la partie basse, c'est que tu es sur une machine d'architecture "little-endian" comme le x86.L'adresse de la donnée sur 16 bits est l'adresse de l'octet de partie basse, puisqu'il vient avant l'autre.
Ca toucherait la partie haute sur d'autres machines (Sparc, Motorola 68k,...). Autrement dit, le code n'est pas portable, si _l'intention_ était de toucher la partie basse. Donc c'est le bordel.
Ici, si ça touche la partie basse, c'est que tu es sur une machine d'architecture "little-endian" comme le x86.L'adresse de la donnée sur 16 bits est l'adresse de l'octet de partie basse, puisqu'il vient avant l'autre.
Ca toucherait la partie haute sur d'autres machines (Sparc, Motorola 68k,...). Autrement dit, le code n'est pas portable, si _l'intention_ était de toucher la partie basse. Donc c'est le bordel.
Le cast d'un type vers un type plus petit perd toujours le poids fort quel que soit l'endianness. Le cast d'une donnée pointée en une donnée plus petite perd le poids fort en little endian, mais perd le poids faible en big endian.
Pour les nombres négatifs c'est encore plus subtil.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
la connaissance est une chose qui ne nous appauvrit pas quand on la partage.
Mon GitHub
En recherche d'emploi.