一、下图是16位、32位、64位编译器环境下不同数据类型和指针申请内存时所占用的字节空间大小。
| 数据类型 | 16位编译器环境(byte) | 32位编译器环境(byte) | 64位编译器环境(byte) | 取值范围 |
| char | 1 | 1 | 1 | -128 ~ 127 |
| unsigned char | 1 | 1 | 1 | 0 ~ 255 |
| short int / short | 2 | 2 | 2 | -32768~32767 |
| unsigned short | 2 | 2 | 2 | 0 ~ 65535 |
| int | 2 | 4 | 4 | -2147483648~2157483647 |
| unsigned int | 2 | 4 | 4 | 0~4294967295 |
| long int / long | 4 | 4 | 8 | -2147483648~2147483647 |
| unsigned long | 4 | 4 | 8 | 0~42294967295 |
| long long int / long long | 8 | 8 | 8 | -9223372036854775808 |
| double | 8 | 8 | 8 | 1.7E+10的负308次⽅~1.7E+10的正308次⽅ |
| float | 4 | 4 | 4 | 3.4E+10的负38次⽅~3.4E+10的38次⽅ |
| long double | 10/12 | 10/16 | 有效位10字节。32位为了对齐实际分配12字节;64位分配16字节 | |
| 指针 | 2 | 4 | 8 | / |
总结:
常用的32位操作系统和64位操作系统对比:除了 * 与long随操作系统子长变化而变化外,其他的都固定不变:bool 1个字节 、char 1个字节、 int 4个字节、float 4个字节 、doubl 8个字节、long long 8个字节
文章详细列出了16位、32位和64位编译器下各种数据类型如char、int、float、double等占用的内存字节数,以及指针的大小。在32位和64位系统中,大部分数据类型的字节数是固定的,但long和指针的大小会随操作系统位数变化。此外,还提到了longdouble在不同系统中的字节数差异。
2万+

被折叠的 条评论
为什么被折叠?



