C/C++ 各数据类型占用字节数
C/C++ 在 16bit & 32bit & 64bit 编译器下各数据类型字节数
C/C++ 中不同目标平台下各数据类型长度是不同的,数据类型的实际长度由编译器在编译期间通过编译参数指定目标平台而确定的。 short int,int,long int 的字节数都是随编译器指定的目标平台而异,但是在 ANSI/ISO 指定:
-
sizeof(short int) <= sizeof(int) <= sizeof(long int);
-
short int >= 16 bit (2 Byte);
-
long int >= 32 bit (4 Byte);
单位:Byte
数据类型 | 16bit 编译器 | 32bit 编译器 | 64bit 编译器 |
---|---|---|---|
char | 1 | 1 | 1 |
short int | 2 | 2 | 2 |
int | 2 | 4 | 4 |
unsigned int | 2 | 4 | 4 |
long | 4 | 4 | 4 |
unsigned long | 4 | 4 | 4 |
long long | 8 | 8 | 8 |
float | 4 | 4 | 4 |
double | 8 | 8 | 8 |
指针变量所占字节
指针变量所占字节数是根据编译器的寻址空间决定宽度的:
-
16 bit编译器寻址空间为 16 bit,所以指针变量宽度为 2 Byte;
-
32 bit编译器寻址空间为 32 bit,所以指针变量宽度为 4 Byte;
-
64 bit编译器寻址空间为 64 bit,所以指针变量宽度为 8 Byte.