C/C++僅僅定義了這些基本數據類型之間的關係,並沒有定義嚴格定義它們的字長。在不同的平臺上,根據編譯器不同的實現,它們的字長如下表所示:
數據類型 | LP64 | ILP64 | LLP64 | ILP32 | LP32 |
char | 8 | 8 | 8 | 8 | 8 |
short | 16 | 16 | 16 | 16 | 16 |
_int32 | N/A | 32 | N/A | N/A | N/A |
int | 32 | 64 | 32 | 32 | 16 |
long | 64 | 64 | 32 | 32 | 32 |
long long | N/A | N/A | 64 | N/A | N/A |
pointer | 64 | 64 | 64 | 32 | 32 |
在這張表中,LP64,ILP64,LLP64是64位平臺上的字長模型,ILP32和LP32是32位平臺上的字長模型。
- I表示int
- L表示long
- LL表示long long
- P表示pointer
32位Windows和unix/類unix系統基本都採用的是ILP32
64位Windows採用的是LLP64
64位unix/類unix(Linux, Mac OS X)基本都採用LP64