您的位置:首页 > 编程语言 > C语言/C++

C++中的基本数据类型

2017-03-21 13:05 274 查看

一、基本内置类型

C++定义了一套包括算术类型和空类型在内的基本数据类型。其中算术类型包括字符、整型数、布尔值和浮点数;空类型不对应具体的值。算术类型的尺寸(数据所占的比特数)在不同的机器上有所差别,尺寸越大所能表示的数据范围就越大,但C++标准规定了最小的尺寸值。

算术类型

算术类型分为两类:整型(包括字符类型、布尔类型)和浮点型。
1、整型数
短整型:short(最小尺寸:16位)   整型:int(最小尺寸:16位)   
长整型:long (最小尺寸:32位)     长整型:long long(最小尺寸:64位)
表示不同尺寸的整数。C++语言中规定了各个整型数类型的尺寸大小:short <= int <= long <=long long。
2、浮点数

单精度浮点数:float(最小尺寸:6位有效数字) 

双精度浮点数:double(最小尺寸:10位有效数字)   

扩展精度浮点数:long double (最小尺寸:10位有效数字)

通常一个 float 型的数据以一个word(32 bit)来表示,double 通常2个 word 来表示,而 long double 以3或者4个 word来表示。 

3、字符

字符:char(最小尺寸:8位)     宽字符:wchar_t(最小尺寸:16位)   

Unicode字符:char16_t(最小尺寸:16位)   Unicode字符:char32_t(最小尺寸:32位)

char是基本的字符类型,一个char的大小和一个机器字节一样大。wchar_t类型用于存放机器最大扩展字符集中的任意一个字符,而 char32_t 和 char16_t 则为Unicode字符集服务。

4、布尔值

布尔类型:bool(最小尺寸:未定义)

布尔类型的取值为真(True)和假(False)两种。

空类型

空类型:void
空类型没有具体值,一般只在特殊场合使用,可以当作函数的返回类型。

二、带符号和无符号

除了bool型和扩展的字符型外,其他的整型可以分为两类:带符号类型和不带符号类型。注意:char类型分带符号和不带符号。无符号数只能表示非负数,而带符号的数在可以表示的范围内可以表示整个整数范围。默认的int、short、long、long long 几种类型都是带符号的,也就是在其前面有隐藏的signed 符号,而想获得无符号数只需要在其前加上 unsigned符号即可。有别于其他整型,字符型被分为三种:char、signed
char、unsigned char,其中类型char和signed char并不相同。三种字符型在实际的情况中表现为两种:带符号和不带符号,类型char会表现出其中的一种,具体情况由编译器的选择决定。

三、如何选择类型

数据类型分为很多种,在编程是可以依据一定的原则来选择合适的数据类型:
1、如果确定数据为非负数,可以选择无符号类型;
2、使用 int 类型来执行整数运算,但也需要结合数值的范围来选择合适的类型;
3、在算术表达式中尽量不要使用char或者bool,只有在存放字符或者布尔值时才使用它们;
4、执行浮点数运算时使用double,通常float精度不够且其计算代价与double差不多。

四、32/64位系统

64位操作系统,不同类型变量对应的字节数为:(红色的表示与32位系统不同之处)64位系统在内存管理方面遵循8字节对齐,原则:在8字节对齐的情况下,按8个字节为单位分配存储空间,如果不足,会自动补充,本次分配不足以存放下面的变量时,会重新分配空间。32位系统是否在内存管理方面遵循4字节对齐。

char :1个字节
char*(即指针变量): 8个字节

short int : 2个字节

int: 4个字节

unsigned int : 4个字节

float: 4个字节

double: 8个字节
long: 8个字节

long long: 8个字节
unsigned long: 8个字节
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: