数据类型在32位系统和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 TypeILP32LP32ILP64LP64LLP64
宏定义LP64LLP64
平台Win32 API / Unix 和 Unix 类的系统(Linux,Mac OS X)Win16 APIUnix 和 Unix 类的系统 (Linux,Mac OS X)Win64 API
char88888
short1616161616
int3232643232
long3232646432
longlong6464646464
pointer3232646464

结论:
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 位,与操作系统位数无关,这也是其跨平台性的体现。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值