为什么long和int都是4字节
2014-05-26 20:09
141 查看
如果你测试过long和int内置类型的大小,当发现都为4字节时,可能都会产生疑问,如果都是4字节,long并没有提供更大的存储范围,那么还要long做什么用?本文如下内容将为你解开这些疑团。
先简要概述以下内置类型的发展,如有疏漏,还请指正。C语言开始时只有char(8位)和int(16位)两种,后来随着发展又加入了short(16位)和long(32位),此时,int可以是16位或者32位,依赖于平台和后续的兼容性。再后来当64位出现时,long long(64位)又被添加进来,为了进行规范,对较小的一些类型的范围就有了一些调整,逐渐稳定为int32位,long可以有多种定义,可以是32位,也可以是64位。
C++标准上只是说long至少要和int一样大,所有整数类型实现时要满足如下规范:
sizeof(char) == 1
sizeof(char) <= sizeof(short)
sizeof(short) <=
sizeof(int)
sizeof(int) <=
sizeof(long)
sizeof(long) <= sizeof(long long)
除了char和long long,其余的类型范围较灵活,都是平台相关的,与实现相关。如果要实现平台独立的话,在windows平台上,就有__intn可以使用,n代表位数。__int8 __int16 __int32 __int64。
先简要概述以下内置类型的发展,如有疏漏,还请指正。C语言开始时只有char(8位)和int(16位)两种,后来随着发展又加入了short(16位)和long(32位),此时,int可以是16位或者32位,依赖于平台和后续的兼容性。再后来当64位出现时,long long(64位)又被添加进来,为了进行规范,对较小的一些类型的范围就有了一些调整,逐渐稳定为int32位,long可以有多种定义,可以是32位,也可以是64位。
C++标准上只是说long至少要和int一样大,所有整数类型实现时要满足如下规范:
sizeof(char) == 1
sizeof(char) <= sizeof(short)
sizeof(short) <=
sizeof(int)
sizeof(int) <=
sizeof(long)
sizeof(long) <= sizeof(long long)
除了char和long long,其余的类型范围较灵活,都是平台相关的,与实现相关。如果要实现平台独立的话,在windows平台上,就有__intn可以使用,n代表位数。__int8 __int16 __int32 __int64。
相关文章推荐
- 为什么long和int都是四个字节?
- int long String与字节数组的相互转换
- char、int、long它们各占几个字节?占几位?
- c语言:输出以下关键字的字节大小及输出一个地址:char,short,int,float,double,long
- char short int long float double等字节大小基础信息
- Java中char,short,int,long占几个字节和多少位
- 在C语言中,double、long、unsigned、int、char类型数据所占字节数
- 在C语言中,double、long、unsigned、int、char类型数据所占字节数
- 在C语言中,double、long、unsigned、int、char类型数据所占字节数
- 8位、16位系统:long是4字节,int是2字节
- long long除以long long 或者 int除以int 为什么得到是0
- 在C语言中,double、long、unsigned、int、char类型数据所占字节数
- c语言:输出以下关键字的字节大小及输出一个地址:char,short,int,float,double,long
- short int,int,unsigned int,long,long int,float,double等32位,64位各占几个字节的问题
- 为什么16 位机器中 int为2字节 32机器中int为4字节
- int short long 在不同环境下字节数
- 32位机器中int/char/long 的字长 && 字节对齐
- char和short都是双字节16bit长的数值类型,为什么相互赋值会提示精度丢失?
- 在C语言中,double、long、unsigned、int、char类型数据所占字节数
- VC中double、long、unsigned、int、char类型数据所占字节数