Lorsqu'un int est converti en une courte et tronquée, quelle est la nouvelle valeur déterminée?

Quelqu'un peut-il clarifier ce qui se passe quand un nombre entier est converti en short en C? Je suis en utilisant le Raspberry Pi, je suis conscient qu'un int est de 32 bits, et donc un short doit être de 16 bits.

Disons que j'utilise la suite du code C par exemple:

int x = 0x1248642;
short sx = (short)x;
int y = sx;

- Je obtenir x serait tronquée, mais quelqu'un peut m'expliquer comment faire exactement? Sont des changements utilisé? Comment est exactement un certain nombre tronqué à partir de 32 bits à 16 bits?

  • Notez que le plâtre (comme la plupart des plâtres) est inutile. Vous pouvez déclarer short sx = x;, et la valeur de x sera converti implicitement en short.
  • La taille réelle de "int" et "court" varient et peuvent varier d'une plateforme à une autre. Mais oui, disons-le, "int" est de 32 bits et le "court" est de 16 bits: 1) Oui, le casting va tronquer la valeur de 32 à 16 bits, 2) Oui, les 16 bits supérieurs sont "perdus", 3) Non, il n'y a pas de touche "shift". PS: Saviez-vous que votre Raspberry Pi a probablement un à part entière de la copie de Mathematica? Certainement la peine de vérifier 🙂
  • Pas exactement un doublon, mais étroitement liés: stackoverflow.com/q/19273658/4996248
  • Aparté: vous pouvez supprimer largeur de bits de tâtonnement avec #include <stdint.h> à apporter dans int32_t, int16_t, etc.
InformationsquelleAutor Bolboa | 2016-01-19