【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

来自:http://bbs.csdn.net/topics/390848520

原文地址:https://www.cnblogs.com/dplearning/p/4722418.html