在32位机器和64机器中int类型都占用4个字节。编译器可以根据自身硬件来选择合适的大小,但是需要满足约束:short和int型至少为16位,long型至少为32位,并且short型长度不能超过int型,而int型不能超过long型。
这即是说各个类型的变量长度是由编译器来决定的,而当前主流的编译器中一般是32位机器和64位机器中int型都是4个字节(例如,GCC)。
下面列举在GCC编译器下32位机器和64位机器各个类型变量所占字节数:
| C类型 | 32位机器(字节) | 64位机器(字节) |
|---|---|---|
| char | 1 | 1 |
| short | 2 | 2 |
| int | 4 | 4 |
| long int | 4 | 8 |
| long long | 8 | 8 |
| char * | 4 | 8 |
| float | 4 | 4 |
| double | 8 | 8 |
总体而言,最大的不同点就是在long型和指针类型长度不一样,对于指针而言,64位机器可以寻址2^64,每个内存地址长度为64位,即8字节。
本文详细对比了在32位和64位机器上使用GCC编译器时,各种基本数据类型(如char、short、int等)及指针类型所占用的字节数。特别指出,int类型无论在32位还是64位机器中均占用4个字节,而long和指针类型在64位机器中则扩展至8字节,以适应更大的寻址空间。

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



