【C/C++】16bit 32bit 64bit 環境別 変数サイズ【一覧】

【C/C++】16bit 32bit 64bit 環境別 変数サイズ【一覧】

16bit 32bit 64bit
- ILP32 LP32 LLP64 LP64 ILP64
sizeof(char) 1 1 1 1 1 1
sizeof(short) 2 2 2 2 2 2
sizeof(int) 2 4 2 4 4 8
sizeof(long) 4 4 4 4 8 8
sizeof(long long) - 8 8 8 8 8
sizeof(void *) 2 4 4 8 8 8
sizeof(void far *) 4 - - - - -
実装例 - Windows 多Linux
(単位 : byte)
タイトルのそのままです。
16bit は正直言っておまけ。32bitと64bitで異なるバイト数のものがある場合は横水色、よく採用されているものを縦黄色にしています。太字はそれが重なったところ、つまり、プログラミングをするうえで気を付けるべきところ。
intは環境が使いやすいサイズであるとよく言われますが、多くのOSではそれを考える必要はなさそう。
それでも、バイト数が異なる環境がなくはないので、それで使うときだけそういうふうに実装すればおk。
longは64bitのLinuxの多くが8バイトなので気を付ける。Windowsではサイズ共通。
ポインタはただ単純に32bitで4バイト、64bitで8バイト、そのまま。これこそ環境が使いやすいサイズ。
farポインタは16bit時代のCの仕様 (標準ではない) 。おまけで書きました。

↓ブログランキングに参加しています
↓投票 (クリック) お願いします~