Long Double と Double の謎
プログラミングの領域では、データ型が極めて重要な役割を果たし、精度とサイズに影響を与えます。価値観の。さまざまなデータ型の中に、long double と double というデータ型が存在しますが、システムによってサイズが異なるため、混乱に包まれることがよくあります。
Windows XP 32 ビット プラットフォームでは、皆さんが発見したように、long double データ型が使用されます。は 12 バイトを占有しますが、double は 8 バイトです。 Long double の一般的に言われる 8 バイトのサイズとの相違により、多くのプログラマは頭を悩ませています。
その答えは、long double データ型の謎めいた性質にあります。 Wikipedia によると、Windows XP を含む x86 アーキテクチャでは、ほとんどのコンパイラは、ハードウェアでサポートされる 80 ビット拡張精度型として long double を実装します。ただし、興味深いことに、この拡張精度は、データ構造のアライメントを最適化するために 12 バイトまたは 16 バイトで格納されることがあります。
さらに、一部のコンパイラは、オプションで、long double を 128 ビットの 4 倍精度形式として実装する場合がありますが、これはネイティブではありません。ハードウェアによってサポートされており、ソフトウェアで実装する必要があります。この拡張された精度により、long double は double よりも広範囲の値を格納できるようになります。
したがって、long double のサイズと精度は普遍的に固定されているわけではなく、コンパイラやオペレーティング システムによって異なる場合があります。 long double データ型の正確な特性を判断するには、使用されている特定のコンパイラのドキュメントを参照することが重要です。
以上がWindows XP で「long double」が 12 バイトを占有することがあるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。