【C语言】32位,64位机器sizeof区别
float, double : 采用IEEE标准浮点数格式,格式固定 float 32bit, double 64bit
int一般和CPU寄存器长度有关,不过也和编译器,汇编器有关
由于C ,C++ 标准没有规定整数类型的固定长度。
同一CPU不同操作系统和编译器,对于int 类型规定的长度是不同的
于是为了区别这些不同,出现了数据模型这种东西。
数据模型(LP32 ILP32 LP64 LLP64 ILP64 )
TYPE LP32 ILP32 LP64 ILP64 LLP64
char 8 8 8 8 8
short 16 16 16 16 16
int 16 32 32 64 32
long 32 32 64 64 32
long long 64 64 64 64 64
pointer 32 32 64 64 64
模型的名字就表明了相应数据类型的位数。LP32就表示long 和 pointer 是32位的其他的类推。
windows下采用的是LLP64, Unix系列的采用的是LP64
注意:char, short, long long在所有模型下的大小都相同
指针在32位下为32bit, 在64位下为64bit