[解決済み] intの大きさはコンパイラやプロセッサに依存しますか?
質問
整数のサイズは、コンパイラ、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++ コンパイラーでそのようなものを見ることは期待しないでください。
関連
-
[解決済み】「corrupted size vs. prev_size」glibc エラーを理解する。
-
[解決済み】標準ライブラリにstd::endlに相当するタブはあるか?
-
[解決済み】デバッグアサーションに失敗しました
-
[解決済み】c++で.txtファイルから2次元の配列に読み込む
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] explicit キーワードの意味は?
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] const int*、const int * const、int const *の違いは何ですか?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】構造体のベクター初期化について
-
[解決済み】C++でint型に無限大を設定する
-
[解決済み】 != と =! の違いと例(C++の場合)
-
[解決済み】C++でランダムな2倍数を生成する
-
[解決済み] error: 'if' の前に unqualified-id を期待した。
-
[解決済み】C++エラー:の初期化に一致するコンストラクタがありません。
-
[解決済み】C++の変数はイニシャライザーを持っているが、不完全な型?
-
[解決済み】エラー:strcpyがこのスコープで宣言されていない
-
[解決済み】CMakeエラー at CMakeLists.txt:30 (project)。CMAKE_C_COMPILER が見つかりませんでした。
-
[解決済み] 64ビットマシンでのsizeof(int)はどうすればよいですか?重複