几条定则
ANSI/ISO制订的
- sizeof (short int) <= sizeof(int)
- sizeof (int) <= sizeof(long int)
- short int 至少应为16位(2字节)
- long int 至少应为32位。
unsigned 是无符号的意思。
16位编译器
类型 | 长度 |
---|---|
char | 1个字节 |
char*(即指针变量) | 2个字节 |
short int | 2个字节 |
int | 2个字节 |
unsigned int | 2个字节 |
float | 4个字节 |
double | 8个字节 |
long | 4个字节 |
long long | 8个字节 |
unsigned long | 4个字节 |
32位编译器
类型 | 长度 |
---|---|
char | 1个字节 |
char*(即指针变量) | 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器) |
short int | 2个字节 |
int | 4个字节 |
unsigned int | 4个字节 |
float | 4个字节 |
double | 8个字节 |
long | 4个字节 |
long long | 8个字节 |
unsigned long | 4个字节 |
64位编译器
类型 | 长度 |
---|---|
char | 1个字节 |
char*(即指针变量) | 8个字节 |
short int | 2个字节 |
int | 4个字节 |
unsigned int | 4个字节 |
float | 4个字节 |
double | 8个字节 |
long | 8个字节 |
long long | 8个字节 |
unsigned long | 8个字节 |
结论
不能一概而论,和机器字长及编译器有关系。