C ++の int データ型とは何か、見つけたヘッダーを掘り下げて、誰でも教えてもらえますか
typedef int INT;
テキスト コードのタイプと RAM の物理ストレージの間のリンクはどこにありますか? コンパイラは、この int が何であるかを認識している必要があります。そして私は尋ねます - それはどこでコンパイラに説明されていますか?
typedef int INT
を定義しませんint
。それは正反対です: のように定義INT
されますint
。int
それ自体は、ソース ファイルではなく、コンパイラの内部で定義されています。
typedef はメモリにまったくマップされません。これは、ストレージのタイプ、サイズなどを説明する単純なテキストです。メモリにマップされるのは、そのタイプの変数です。
Anint
は整数です。最も基本的なレベルでは、数値として解釈される単純なバイトのセットです。最新のプロセッサ (およびオペレーティング システム) は複数のサイズの整数をサポートしていますが、32 ビットと 64 ビット (それぞれ 4 バイトと 8 バイト) が最も一般的です。
ハードウェアで表現すると、高電圧と低電圧に設定された単純なデータ ラインです。32 ビットのパラレル データ バスには 32 本のデータ ラインがあり、それぞれが 1 ビットを表します。数値 100 を表現したい場合は、それを 2 進表現 (つまり1100100
) に変換し、3、6、7 行目を高く設定し、残りを低く設定します。プロセッサと他のマイクロコントローラは、内部機能とプログラミングに基づいてこの信号を解釈できます。
int
c++ 標準の §3.9.1 基本型で説明されています。実際のサイズは実装に依存します。基本型のサイズに関して、C++ は C99 を参照します。や<climits>
などの値が定義されているヘッダーと、ヘッダーで使用できる機能、特にを参照してください。これにより、プラットフォーム上のさまざまなタイプの範囲を決定する機能が提供されます。詳細については、こちらを参照してください。MIN_INT
MAX_INT
<limits>
std::numeric_limits
あなたが言及したtypedefは、シンボルINT
を使用してint
.
int
プリミティブC/C ++タイプであるため、これ以上深く進むことはできません。
テキストコードの入力とRAMの物理ストレージの間のリンクはどこにありますか?int i =と言ったときにコンパイラが行うことになっているので、終了することはできません。彼はこのintが何であるかを知っている必要があります。
Windowsの場合(他のオペレーティングシステムの経験はありません)、コンパイラはコードを実行可能ファイルにビルドします。実行可能ファイルには、データセクターとコードセクターの2つの主要なセクターがあります。int i
コードがコンパイルされると、メモリの場所(0x0000004など)に変換されることを宣言するとします。オペレーティングシステムが実行可能ファイル(Windowsでは.exeまたは.dll)をロードすると、OSはアプリケーション用の仮想メモリを作成します。(例:0x100000000)。したがって、int i
物理メモリでは0x100000004に配置されますが、アプリケーション仮想メモリでは0x0000004に配置されます。
上記の説明は、物事がどのように機能するかを簡略化したものです(実際の物事はもっと複雑になる可能性があります)
C++ は純粋なオブジェクト指向ではありませんが、定義されたすべての変数は C++ 用語では「オブジェクト」と呼ばれます。クラスのインスタンスではなくint
、その 1 つである型があります。
anint
は、符号付き整数として解釈される少なくとも 16 個の連続ビットのセットです。実際のサイズと、特定のビット パターンを整数にマップする方法は、主にコンパイラとプラットフォームに依存します。