标签:Windows 32 模型 long Unix 64 字长 数据模型
因为 C 语言只规定了,long 型占用字节数不小于 int 型, int 型不小于 short 型,所以不同的编译器对于每种数据类型就有不同的实现。
数据(字长)模型是编译器用来确定基本数据类型长度的,有 LP64、ILP64、LLP64、ILP32、LP32。
- I:int
- L:long
- P:pointer
- LL:long long
- 64:上述类型字长 64
- 32:上述类型字长 32
Data Type | ILP32 | LP32 | ILP64 | LP64 | LLP64 |
---|---|---|---|---|---|
宏定义 | _ | _ | _ | LP64 | LLP64 |
平台 | Win32 API / Unix 和 Unix 类的系统 (Linux,Mac OS X) | Win16 API | Unix 和 Unix 类的系统 (Linux,Mac OS X) | Win64 API | |
char | 8 | 8 | 8 | 8 | 8 |
short | 16 | 16 | 16 | 16 | 16 |
int | 32 | 32 | 64 | 32 | 32 |
long | 32 | 32 | 64 | 64 | 32 |
long long | 64 | 64 | 64 | 64 | 64 |
pointer | 32 | 32 | 64 | 64 | 64 |
结论:
1、32 位 Windows 和类 Unix 使用 ILP32 字长模型,64 位 Windows 使用 LLP64 模型,64 位类 Unix 使用 LP64 字长模型。
2、根据 1,long 在 32 位和 64 位 Windows 上永远是 4 字节,在 32 位类 Unix 上是 4 字节,在 64 位类 Unix 上是 8 字节。
3、其他基本类型 Windows 和类 Unix 字长一致。
也就是说:
32 位 Windows 和类 Unix(UNIX/Linux/MacOS X)均采用 ILP32 字长(数据)模型。
64 位 Windows 采用的是 LLP64 数据模型,64 位采用的是 LP64 数据模型。
Java 语言规定了 int 是 32 位,long 是 64 位,与操作系统位数无关,这也是其跨平台性的体现。
标签:Windows,32,模型,long,Unix,64,字长,数据模型 来源: https://www.cnblogs.com/ageovb/p/15270115.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。