各种数据类型表⽰范围
以前整理的不到了,这次好好整理⼀下吧~~~
⼀、基本类型的⼤⼩及范围的总结(以下所讲都是默认在32位操作系统下):
字节:byte;位:bit。
1.短整型short:所占内存⼤⼩:2byte=16bit;
所能表⽰范围:-32768~32767;(即-2^15~2^15-1)
2.整型int:所占内存⼤⼩:4byte=32bit;
所能表⽰范围:-2147483648~2147483647;(即-2^31~2^31-1)
unsigned:  所占内存⼤⼩:4byte=32bit;
能表⽰范围:0~4294967295;(即0~2^32-1)
3.长整型long:所占内存⼤⼩:4byte=32bit;
所能表⽰范围:-2147483648~2147483647;(即-2^31~2^31-1)
unsigned long:  所占内存⼤⼩:4byte=32bit;
所能表⽰范围:0~4294967295;(即0~2^32-1)
注:上⾯所说的全部是有符号型的,short,int,long都默认为有符号型,其
中long和int都占4个字节的空间⼤⼩,他们有什么区别呢?
16位操作系统:long:4字节,int:2字节
32位操作系统:long:4字节,int:4字节
64位操作系统:long:8字节,int:4字节
int型在不同位数操作系统中所占⽤的字节数不同,如果想编写可移植性好的程序,早年流⾏16位和32位操作系统时最好⽤long修
饰int型,现在流⾏32位和64位操作系统,⽤int就挺多了。当然这些都看你怎么去理解它了,毕竟它们在不同操作系统所占字节数不固定,所以各⾃都有其适⽤之处,不可定论其好坏。位字符串是什么
下⾯是对它们的有科学依据的规定:
C语⾔规定:⽆论什么平台都要保证long型占⽤字节数不⼩于int型, int型不⼩于short型。
4.字符型char:所占内存⼤⼩:1byte=8bit;
所能表⽰范围:不确定;
unsigned char:所占内存⼤⼩:1byte=8bit;
所能表⽰范围:0~255;(0~2^8-1)
singned char:  所占内存⼤⼩:1byte=8bit;
所能表⽰范围:-128~127;(-2^7~2^7-1)
char的默认类型不确定有可能是unsigned,也有可能是signed,主要更具编译器⽽定,可以⾃⼰测试⼀下编译器的默认char的符号类型。
5.布尔类型bool:所占内存⼤⼩:1byte=8bit;
所能表⽰的范围:只能取两个值false或者true;所以最⼩值就是:0,最⼤值:1.
6.单精度float:所占内存⼤⼩:4byte=32bit;
所能表⽰的范围:(1.17549e-038)~(3.40282e+038);
7.双精度double:所占内存⼤⼩:8byte=32bit;
所能表⽰的范围:(2.22507e-308)~(1.79769e+308);
注:如何区分和使⽤这两个浮点类型呢,⾸先float和double的精度不同,float保留到⼩数点后⾯7位,⽽double保留到⼩
数点后⾯16位,float能保证6位有效数字,⽽double能保证15位有效数字,如果在不追求精度的的情况下当然⽤ float⽐
较好,节省内存,如果需要很⾼的精度的情况下,最好还是⽤double,平时我们定义浮点型变量⼀般都⽤double,毕竟精
度⾼,⼀般精度的损失是不能忽略的。
8.long  long类型:
long long的表⽰范围:-9223372036854775808~9223372036854775807(19位)
unsigned long long的最⼤值:18446744073709551615(19位)
9.字符串string:由于string在c++中属于类类型,不是基本数据类型,类不能计算其在内存中所占⼤⼩,⾮要⽤sizeof(string)来算的话,⼀般算出来的结果是 sizeof(string)=4byte,如果string字符串内容很多,很明显就不是其真实⼤⼩,string类⾥⾯有计算其字节⼤⼩的函数
如:size(),length()。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。