36位和64位机器中 C 的数据类型占字节数(windows下实测)

数据类型32位64位
int44字节
short int22字节
unsigned int44字节
int*48字节
char11字节
char*48字节
float44字节
double88字节
long44字节
long long88字节
unsigned long44字节

可见,两者环境下的数据类型所占字节数都是一样的;
唯一不同的是:指针类型
32位:32位的寻址空间是2^32, 即32个bit,因此指针类型占4个字节
64位:指针类型占8个字节

关于平常争议的long字节是8还是4

这涉及到编译器用的数据模型的问题。
绝大部分64位的Unix,linux都是使用的LP64模型;
64位的Windows使用的是LLP64(long long and point 64)模型。
下表是不同模型下数据类型的 bits,可见即使机器位数相同,数据字节也不一定一样,红色标注就是怪咖。
(I = int , L = long, P = pointer, 数字 = bits)

DatatypeLP64(linux)ILP64LLP64(windows)ILP32(linux/windows)LP32
char88888
short1616161616
int3264323216
long6464323232
long long6464646464
pointer6464643232
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值