2016-10-28 5 views
1

申し訳ありませんが、Googleを使用してこの質問の回答を見つけることができませんでした。私は英語のスピーカーではなく、正しい単語を使って検索していないかもしれません。フロートサイズはオペレーティングシステムによって異なりますか?

私は、データ型のサイズはアーキテクチャの言葉のサイズに依存することを覚えています(あるいは多分私は間違っています)。しかし、サイズがオペレーティングシステムによって異なるかどうかはわかりません。

私はWindows 7の32ビットで作業していますが、Windows 7の64ビットを使用するときに浮動小数点のサイズが変わるかどうかはわかりません。

私はVisual Studio 2012を使用して、Win32プロジェクトを使用してソリューションをコンパイルしています。

Windowsのバージョンを32ビットから64ビットに変更するとサイズが変わるのですか?

フロートとダブルの違いは何ですか?私はWindows 7の32ビットからWindows 7の64ビット(またはviceversa)にオペレーティングシステムを変更する場合、浮動小数点が同じコンピュータ上のメモリ(メモリのビット数)に同じサイズを持つかどうかを尋ねています。

+4

[プラットフォームによって異なります](http://en.cppreference。com/w/cpp/language/types)おそらくここでは変更されません。 – Asu

+0

@EliSadoffフロートとダブルの違いは何ですか?私はWindows 7の32ビットからWindows 7の64ビット(またはviceversa)にオペレーティングシステムを変更する場合、浮動小数点が同じコンピュータ上のメモリ(メモリのビット数)に同じサイズを持つかどうかを尋ねています。 – VansFannel

+1

あなたが心配するのは、Windows 32ビットとWindows 64ビットの両方であり(質問のタイトルが信じられるような任意のオペレーティングシステムではない)、サイズを変更する唯一の基本的なタイプはポインタです。それに対応して、 'float'と' double'は4バイトと8バイトのままです。実際、Windows 64は32ビットと64ビットの両方のプログラムを実行できます。前者の場合、すべてがWindows 32(4バイトの大きさのポインタを含む)で動作しているように見えます。 –

答えて

5

正式には、浮動小数点型のサイズは、使用される特定のコンパイラによって異なります。

実際には、組み込み浮動小数点ハードウェア(つまり、一部の組み込みシステムを除く)を搭載したチップに基づくシステムの場合、コンパイラは浮動小数点ハードウェアを使用し、そのチップを対象とするすべてのコンパイラはfloatdoubleに同じサイズを使用してください。

さらに、デスクトップハードウェアは、floatdoublelong double)のサイズを設定するIEEE 754浮動小数点標準で解決されています。したがって、デスクトップシステムをターゲットにしている場合は、floatはどこでも同じサイズになり、doubleはどこでも同じサイズになると考えることは安全です。

std::numeric_limits<float>::is_iec559std::numeric_limits<double>::is_iec559を使用して、コンパイラが使用する浮動小数点の実装がIEEE 754(IEC 559はIEEE 754規格の古い名前です)に準拠しているかどうかを確認できます。

1

3.9.1基本タイプ

3つの浮動小数点型があります:float型、ダブル、long doubleのは。 double型はfloat以上の精度を提供し、 型long doubleは少なくともdoubleと同じ精度を提供します。 float型の値の は、double型の の値のサブセットです。 double型の値の集合は、long double型の値の集合である の部分集合です。 浮動小数点型の値表現は、実装定義です。

強調は私のものです。 C++標準では、浮動小数点型を特に表現する必要はありません。浮動小数点データ型のサイズは、異なるオペレーティングシステム、オペレーティングシステムの異なるバージョン、または同じオペレーティングシステムの異なるコンパイラ、または同じコンパイラを使用する異なるコンパイルオプション間で変更されたり、変更されたりすることがあります。

+0

技術的には正解ですが、あまり役に立たないです。 –

関連する問題