32bitと64bitのサイズの違い(C言語) [プログラミング]
32bitと64bit環境ではサイズが違うのでメモメモ。
色々な型に対してsizeof()関数を使ってみた結果は以下の通り。
OS間または32bit/64bit間でサイズが変わる型を使う場合は移植に注意が必要。
Windows | Solaris | Linux | ||||
32bit | 64bit | 32bit | 64bit | 32bit | 64bit | |
sizeof(char) | 1 | 1 | 1 | 1 | 1 | 1 |
sizeof(short) | 2 | 2 | 2 | 2 | 2 | 2 |
sizeof(int) | 4 | 4 | 4 | 4 | 4 | 4 |
sizeof(float) | 4 | 4 | 4 | 4 | 4 | 4 |
sizeof(long) | 4 | 4 | 4 | 8 | 4 | 8 |
sizeof(void*) | 4 | 8 | 4 | 8 | 4 | 8 |
sizeof(double) | 8 | 8 | 8 | 8 | 8 | 8 |
sizeof(long long) | 8 | 8 | 8 | 8 | 8 | 8 |
sizeof(long double) | 8 | 8 | 16 | 16 | 12 | 16 |
・WindowsとLinuxの64bit環境についてはItanium 2プロセッサ搭載マシンで実験。
・SolarisはSPARC 64Vプロセッサ搭載マシンにて実験(コンパイルオプションにより32/64切り換え)