【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の仕様 (標準ではない) 。おまけで書きました。
↓ブログランキングに参加しています
↓投票 (クリック) お願いします~