Maison >développement back-end >C++ >Pourquoi « long double » occupe-t-il 12 octets sur mon système Windows XP 32 bits ?

Pourquoi « long double » occupe-t-il 12 octets sur mon système Windows XP 32 bits ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-10 11:26:02206parcourir

Why Does 'long double' Occupy 12 Bytes on My 32-bit Windows XP System?

Clarification de l'écart entre les types de données « double long » et « double »

Malgré la compréhension commune selon laquelle le « double long » occupe généralement 8 octets, l'affiche rencontre un scénario particulier dans lequel le « double long » revendique 12 octets sur leur système Windows XP 32 bits. Pour résoudre cette énigme, examinons les raisons sous-jacentes.

Selon Wikipédia, sur l'architecture x86 (qui inclut Windows XP), la plupart des compilateurs choisissent d'implémenter « long double » comme type de précision étendue de 80 bits. . Cependant, pour maintenir un alignement efficace de la structure des données, ce type peut être stocké sous forme de 12 octets (voire 16 octets) dans certains cas.

De plus, certains compilateurs vont au-delà du type 80 bits et implémentent le « double long » au format 128 bits à quadruple précision. Ce format avancé n'est pas largement adopté et est généralement implémenté dans un logiciel, plutôt que d'être pris en charge nativement par le matériel.

Par conséquent, la réponse réside à la discrétion du compilateur. Bien que « long double » corresponde généralement au type de précision étendue de 80 bits, les compilateurs sont libres d'étendre sa capacité de stockage à 12 ou même 16 octets à des fins d'alignement. En conséquence, la capacité de stockage étendue permet potentiellement de stocker une plus large gamme de valeurs dans le « double long » par rapport au « double ».

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn