1. ホーム
  2. c++

[解決済み] intの大きさはコンパイラやプロセッサに依存しますか?

2023-06-25 10:28:14

質問

整数のサイズは、コンパイラ、OS、プロセッサに依存するのでしょうか?

どのように解決するのですか?

この質問に対する答えは、実用的な検討からどこまで離れられるかによります。

最終的に、理論的には、CとC++のすべてはコンパイラに依存し、コンパイラにのみ依存します。ハードウェア/OS はまったく重要ではありません。コンパイラーは自由にハードウェアの抽象化レイヤーである 任意の の厚さのハードウェア抽象化レイヤーを実装し、絶対に何でもエミュレートすることができます。C や C++ の実装が int 型を実装することを妨げるものは何もありません。このような抽象化レベルの実例は、Java のような仮想マシン プラットフォームに基づくプログラミング言語など、すぐに利用可能です。

しかし、C や C++ は高度な抽象化を目的としています。 効率的 言語です。最大の効率を達成するために、C や C++の実装では、基盤となるハードウェアに由来する特定の考慮事項を考慮する必要があります。そのため、各基本型がハードウェアで直接(またはほぼ直接)サポートされている表現に基づいていることを確認することは、非常に理にかなっています。その意味で、基本的な型のサイズはハードウェアに依存します。

言い換えれば、64 ビットハードウェア/OS プラットフォームのための特定の C または C++ の実装は、絶対に自由に int を、128 ビットのメモリを占有する 71 ビットの 1 補数符号付き整数型として、残りの 57 ビットをコンパイラー作者のガールフレンドの誕生日を格納するために常に必要なパディング ビットとして使用し、自由に実装できます。この実装は、C/C++プログラムの移植性を実行時にテストするのに使うことができるなど、一定の実用的な価値もある。しかし、その実装の実用的な有用性はそこで終わってしまうだろう。通常の C/C++ コンパイラーでそのようなものを見ることは期待しないでください。