Ada语言之常见标量类型

257 阅读2分钟

整型、枚举类型属于离散类型(Discrete type)。

整型、枚举类型、实型属于标量类型(Scalar type)。

整型与实型又属于数值类型(Numeric type)。

数字空间犹如宇宙,它是无限的,又无处不在的。

整型与实型是相对的,前者的离散性是因为有后者的充实性!

如今世界上绝大部分的计算机都是基于二进制的(这么说是以前还存在过三进制的!),每个最小的存储单元有两种状态:0和1 。这种二进制的存储单元称为1个比特(bit)位。

比特类型在Ada中可以像如下声明:

type bit is mod 2;

比比特大的整型类型有字节(byte),字(word),双字(dword),四字(qword) 。Ada语言是强类型语言,把有符号和无符号类型是明确区分的。

符号类型声明如下:

type signed_char is range -2*7 .. *7;

符号类型声明如下:

type unsigned_char is mod 2 ** 8;

type unsigned_char is range 0 .. 2 ** 8 - 1;

言标准(Stanard)预定义了如下有符号整型:

Short_Short_Integer Short_Integer Integer Long_Long_Integer

在32位模式下,上述类型字节数为1,2,4,8 。

言标准(Stanard)预定义了如下浮点类型: Short_Float Float Long_Float Long_Long_Float 在32位模式下,上述类型字节数为4,4,8,12 ,有点失望,Short_Float竟然不是16位的。

言中涉及两个保留字来定义实型:digitsdeltadigits用于定义浮点的相对精度(或者说是有效的数字位数,又或者说是整数位与小数位之和),如:

type  Real32  is  digits  6;

上面的语句定义了6位精度的Real32 。这里的Real32相当于预定义的Float,Float就是具有6位精度的,它们的尺寸为32比特。Long_Float的精度为15,Long_Long_Float的精度为18 。语言中定义有digits属性可以获取浮点类型的精度,如:Float’digits ,这里我们又接触一个Ada语言独有的属性操作符—单引号 。

浮点类型定义的是整数位(小数点之前的)和小数位(小数点之后的)之和,它的精度是浮动的,可以是整数位多,也可以是小数位多。而定点类型就是定义小数部分的绝对精度。例程如下:

type  RMB  is  delta  0.01 ;

以上的语句定义了人民币的绝对精度(最小单位)为0.01元(就是1分钱)。定点控制可以与浮点控制合用,如:

type  RMB  is  delta  0.01   digits  18;