对于指针类型,因为指针指向的是一个地址,32位操作系统就是4字节。64位操作系统那就是8字节了。
int这个类型占操作系统一个内存单元大小。早先16位操作系统一个内存单元是16位,所以是2个字节;32位系统一个内存单元是是32位,所以是4字节;64位操作系统,4字节。
整形加unsigned (short,int,long,long long)字节长度不变
整形加unsigned (short,int,long,long long)字节长度不变
(1)16位编译器
char 1个字节8位
short 2个字节16位
int 2个字节16位
long 4个字节32位
long long: 8个字节
long long: 8个字节
指针 2个字节16位
float: 4个字节
double: 8个字节
char : 1个字节
float: 4个字节
double: 8个字节
char : 1个字节
(2)32位平台
char 1个字节8位
short 2个字节16位
int 4个字节32位
long 4个字节32位
long long 8个字节64位
指针 4个字节32位
float: 4个字节
double: 8个字节
float: 4个字节
double: 8个字节
(3)64位平台
char 1个字节
short 2个字节
int 4个字节
long 8个字节(区别)
long long 8个字节
指针 8个字节(区别)float: 4个字节
double: 8个字节
所以int,long int,short int的宽度都可能随编译器而异。但有几条铁定的原则(ANSI/ISO制订的):
-
sizeof(short)<=sizeof(int)
-
sizeof(int)<=sizeof(long)
-
short 至少应为16位(2字节)。
-
long 至少应为32位(4字节),至少与int一样长。
位与字节
计算机内存的基本单元是位(bit)。
字节(byte)通常指8位的内存单元,指的是描述家算计内存存量的度量单位,1kB=1024字节,1MB=1024KB。