本文を読み飛ばす

iOSでの整数型のサイズ

iOS での整数型のサイズについて備忘録。 32 ビット版 iOS は ILP32、64 ビット版 iOS は LP64 であるとのこと。

The 32-bit runtime uses a convention called ILP32, in which integers, long integers, and pointers are 32-bit quantities. The 64-bit runtime uses the LP64 convention; integers are 32-bit quantities, and long integers and pointers are 64-bit quantities.

Major 64-Bit Changes

他の型についても iOS Simulator で調べたところ、上記引用をした Apple の記事の通り次のような状況になっていた(値はビット数)。

Type ILP32 LP64
Pointer 4 8
size_t 4 8
NSInteger 4 8
char 1 1
bool 1 1
short 2 2
int 4 4
long 4 8
long long 8 8

size_t はポインターと同じサイズであることが C/C++ の標準規格で定められていたと記憶。 NSInteger はそれと同じ仕様であるのか、あるいは long と同じであるのか、 アーキテクチャによりサイズが異なるようだ。また long long は常に 8 バイト (64 ビット整数)であるらしい。記憶にとどめておこう。