基本データ型

次の基本データ型は、ARM C および C++ で実装されます。

Show/hide基本データ型のサイズと境界整列

Table 32 は、基本データ型のサイズと自然境界整列を示しています。

Table 32. データ型のサイズと境界整列

種類サイズ(ビット数)自然配列(バイト数)
char81(バイト境界で整列)
short162(ハーフワード境界で整列)
int324(ワード境界で整列)
long324(ワード境界で整列)
long long648(ダブルワード境界で整列)
float324(ワード境界で整列)
double648(ダブルワード境界で整列)
long double648(ダブルワード境界で整列)
すべてのポインタ324(ワード境界で整列)
bool(C++ のみ)81(バイト境界で整列)
_Bool(C のみ[a]81(バイト境界で整列)
wchar_t(C++ のみ)162(ハーフワード境界で整列)

[a] stdbool.h は、C 言語の bool マクロを定義するために使用できます。


型の境界整列は、コンテキストに応じて変化します。

  • 通常、ローカル変数はレジスタに保持されますが、ローカル変数が多くなりスタックを使用する場合は、常にワード境界で整列されます。例えばローカル変数 char がスタック上に配置される場合の境界整列は 4 です。

  • パック型の自然境界整列は 1 です。

詳細については、構造体、共用体、列挙型、ビットフィールドを参照して下さい。

Show/hide整数

整数は、2 の補数形式で表現されます。long long の下位ワードは、リトルエンディアンモードでは下位アドレス、ビッグエンディアンモードでは上位アドレスに配置されます。

Show/hide浮動小数点数

浮動小数点数は、IEEE 形式で保存されます。

  • float 値は、IEEE の単精度値で表現されます。

  • double 値と long double 値は、IEEE の倍精度値で表現されます。

double 値と long double 値の場合、符号、指数、および仮数の最上位部を保持するワードは、ビッグエンディアンモードでは下位マシンアドレスに、リトルエンディアンモードでは上位マシンアドレスに保存されます。詳細については、浮動小数点型の演算を参照して下さい。

Show/hide配列とポインタ

以下は、メンバへのポインタを除き、C および C++ のオブジェクトを指すすべてのポインタに適用されます。

  • 隣接するバイトには、1 つずつ異なるアドレスが割り当てられます。

  • マクロ NULL は値 0 に展開されます。

  • 整数とポインタ間のキャストによって表現が変化することはありません。

  • コンパイラでは、関数へのポインタとデータへのポインタ間のキャストについて警告を生成します。

  • size_t 型は、unsigned int として定義されます。

  • ptrdiff_t 型は、signed int として定義されます。

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0491EJ
Non-ConfidentialID081711