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
本文详细介绍了在不同平台及编译器环境下C/C++基本数据类型的字长变化情况,包括LP64、ILP64、LLP64等64位平台模型以及ILP32和LP32等32位平台模型。
1512

被折叠的 条评论
为什么被折叠?



