首页 > 代码库 > 有关于short,int,long的内容
有关于short,int,long的内容
首先,我们要理解“位”,“字节”,“字”(word),这三个的意思。
位(bit)是储存的最小单位,只能放一个机器语言里的0或1。
字节(byte),8个位(bit)就是一个字节,所以1字节=8位,4字节就是32位。
字(word)的长度跟计算机性能有关,如16位的计算机,它的字长度就是2个字节,32位的计算机,字长就是4个字节。
一般情况:
1、int通常代表特定机器中证书的自然长度。
2、long long 类型为64位,long类型位32位,short类型为16位,int类型为16位或32位。
3、原则上这四种类型代表4个不同大小的数值。
4、各编译器可以根据硬件特性自主选择合适的类型长度,但要遵循下列限制:short与int类型至少为16位,long类型至少为32位,并且short类型不得长于int类型,而int类型不得长于long类型。
5、一般,short类型为半个机器字长(word)长,int类型为一个机器字长,而long类型为一个或两个机器字长(在32位机器中int类型和long类型通常字长是相同的)。参看上面字的长度解释。
类型 |
16位系统/字节 |
32位系统/字节 |
64位系统/字节 |
char |
1 |
1 |
1 |
char* |
2 |
4 |
8 |
short |
2 |
2 |
2 |
int |
2 |
4 |
4 |
long |
4 |
4 |
8 |
long long |
8 |
8 |
8 |
从表中可以看出这么几个问题,int类型在64位系统下竟然是4个字节32位的。还有,这些玩意儿到底跟什么有关系?是谁在控制着?从网上扒了各种解释,大概有这么两点:
1、64位系统下,编译器为了向前兼容,将int类型自动编译为4个字节的了;
2、这些个玩意儿就是编译器来控制的,不同的编译器将int类型编译成不同长度的,所以,使用什么编译器才是重要的,比如:32位系统,tc下的int就是16位长度的,VC就是32位长度的。如果你的系统是64,那么编译器软件默认安装路径有Program File(x86),它就是32位的编译器。
3、long long是标准的8 bytes,不受编译器限制,所以,16位的依然也是8 bytes。
4、我们在使用整型变量的时候还是得小心的,尤其需要其所占空间长度的时候,千万不要想当然的认为int在32位系统下就是4个字节。尽量使用sizeof取值。
有关于short,int,long的内容