1.1基本内置类型

来源:互联网 发布:淘宝v3会员是什么级别 编辑:程序博客网 时间:2024/04/26 07:30

数据类型非常重要,它告诉我们数据的意义和对数据可进行的操作。C++定义了一套包含算术类型空类型在内的基本数据类型。其中算术类型又包含字符、整型数、布尔值和浮点数,而空类型没有具体的值,只是用于一些特殊的场合,例如在函数不返回任何类型时,就用空类型表示返回类型。

1.1.1算术类型

算术类型包含整型和浮点型。这些类型在不同的机器上会有一些差别,具体在于它们所占有的比特位上,下表列出C++标准规定的最小尺寸值,同时允许编译器赋予这写类型更多的比特位。由于比特位数的不同,导致了这些类型所能表示的数值范围也不同。

表1.1:C++算术类型 类型 含义 最小尺寸 bool 布尔类型 未定义 char 字符 8 wchar_t 宽字符 16 char16_t Unicode字符 16 char32_t Unicode字符 32 short 短整型 16 int 整型 16 long 长整型 32 long long 长整形 64 float 单精度浮点型 6位有效数字 double 双精度浮点型 10位有效数字 long double 扩展精度浮点型 10位有效数字

布尔类型(bool)的取值是(true)或(flase)。

C++提供了多种字符类型,其中多数支持国际化。基本字符类型是char,一个char的空间应该确保可以存放机器基本字符集中任意字符对应的数字值。也就是讲,一个char的大小应该和一个机器字节的大小一样。wchar_t、char16_t、char32_t用于扩展字符集,wchar_t类型用于确保可以存放机器最大扩展字符集中的任意一个字符,char16_t和char32_t则是为Unicode字符集服务(Unicode是用于表示所有自然语言中字符的标准)。
除字符和布尔类型之外,其他整型用来表示(可能)不同尺寸的整数。C++语言规定了一个int至少是一个short的大小,一个long至少是一个int的大小,一个long long至少是一个long的大小。其中数据类型long long是在C++中新定义的。

内置数据类型的机器实现


计算机他只认识0和1,因此计算机内部的数据都是用0和1的字串来表示的。我们把这种表示叫做比特序列。就比如

0000001110101010101000001111110

大多数计算机以2的整数次幂个比特作为块来处理内存,可寻址的最小内存块称为“字节(byte)”,存储的基本单元称为“字(word)”,它通常由几个字节组成。在C++语言中,一个字节至少要能容纳基本字符集中的任意字符。大多数机器的字节由8个比特位构成,字则由32或64个比特位构成,也就是4或8字节。

大多数计算机将存储的每个字节与一个被称作地址的数字关联起来,在一个字节为8比特、字为32比特的机器上可能可以看到一个字的内存区域如下一般的表示

0 0 1 1 1 0 1 1 0 0 0 1 1 1 1 1 1 0 0 1 1 1 0 0 1 1 1 1 1 1 1 1

对应的地址从上倒下分别为:736424、736425、736426、736427
我们可以用某个地址来表示从该地址开始的大小不同的比特串,例如,可以用地址736424的那个字或者地址736427的那个字节来分别表示我们选择的数据。为了赋予内存中的某个地址明确的含义,必须先知道存储在该地址的数据类型。类型决定了数据所占的比特数以及该如何去解释这些比特的内容。
如果位置736424处的对象类型是float,并且该机器中float类型以32比特存储,那么我们就知道这个对象的内容占满了整个字。这个float数的实际数值依赖于该机器存储浮点数的机制。如果位置736424处的对象类型是unsigned char,并且该机器使用ISO-8859-1字符集,则该位置处的字节表示一个分号。

浮点型可表示单精度、双精度、和扩展精度值。C++规定了一个浮点数的有效位的最小值,但大部分编译器都实现了更高的精度。通常情况下float以一个字(32位)来表示,double以两个字来表示,long long以3至4个字来表示。一般来说,类型float和double分别有7和16个有效位;类型long double通常被用于有特殊浮点需求的硬件,它的具体实现不同,精度也不同。

0 0
原创粉丝点击