1

C および C++ では、組み込みの整数型のサイズは実装に依存します。しかし、 int が機械語のサイズなどを表すような、定義済みの意図された意味はありますか?

4

3 に答える 3

5

歴史的にintは、マシンのハードウェア上の整数の最も「自然な」型を意味すると考えられていました。明らかに、「自然」はやや主観的ですが、過去には、それは通常かなり明白であり、とにかく利用可能な整数型がそれほど多くなかったため、 aまたは aintと同じサイズにするのが通常の流れでした。longshort

さまざまな理由から、ほとんどの 64 ビット プラットフォームはint32 ビットになります。これは最も「自然な」長さではないと簡単に主張できますが、32 ビット整数がデフォルトであり、int明らかにデフォルトの整数型であるという要望がありました。それがアーキテクチャにとって最も自然であるかどうかは、デフォルトとして必要なサイズであるかどうかに依存します。

ワードサイズに関して: 歴史的には、これが最も自然でしたが、多くの点で、現代のマシンでの「ワードサイズ」が何を意味するのか明確ではありません: 演算を実行できる最大サイズ? メモリとの間のバス転送のサイズ? 伝統的に、「ワードサイズ」は、内部レジスタの幅 (マシンにレジスタがあった場合)、または基本的なバス転送のサイズの両方を意味するために使用されてきました。(8088 は通常 8 ビット マシンと呼ばれていましたが、レジスタは 32 ビットでした。) 今日ではあまり意味を持ちません。

于 2012-10-22T16:04:35.920 に答える
4

それについてはいくつかの言い回しがありますが、それほど厳密ではありません。

文字 (char) として宣言されたオブジェクトは、実装の基本文字セットのメンバーを格納するのに十分な大きさでなければなりません。

標準の符号付き整数型には、「signed char」、「short int」、「int」、「long int」、および「long long int」の 5 つがあります。このリストでは、各タイプは、少なくともリスト内の前のタイプと同じ量のストレージを提供します。(...)プレーンな int は、実行環境のアーキテクチャによって提案される自然なサイズを持ちます。その他の符号付き整数型は、特別なニーズを満たすために提供されます。

float のサイズに関する厳密な推奨事項もありません。

浮動小数点型には、float、double、long double の 3 つがあります。double 型は少なくとも float と同じ精度を提供し、型 long double は少なくとも double と同じ精度を提供します。(...)浮動小数点型の値表現は実装定義です。

于 2012-10-22T15:53:46.123 に答える
1

C は、Java とは異なり、スタンドアロン プラットフォームではなく、プラットフォーム イネーブラーとして設計されました。クロスプラットフォームの互換性は、特定のプラットフォームで最適に機能するデータ型のサイズで作業するよりもはるかに優先度が低くなりました。したがって、整数型は C 標準では指定されておらず、完全にプラットフォーム固有です。

于 2012-10-22T16:06:24.573 に答える