z 对整数类型,一个值的序数为它本身的值
z 子界类型保留它们的基础类型的序数值
z 对其它有序类型,默认情况下,第一个值的序数为0,下一个为1,依此类推。声明一个枚举类型
时,可明确地覆盖默认值。
有几个内置的函数作用于有序类型的数据和类型标志符,下面是最重要的几个:
函数
Ord
Pred
Succ
High
Low
- 44 - 参数 有序类型表达式 有序类型表达式 有序类型表达式 有序类型的变量或标志符 有序类型的变量或标志符 返回值 序数值 表达式的前驱值 表达式的后继值 类型的最大值 类型的最小值 说明 不能用于 Int64 类型 可用于短字符串或数组 可用于短字符串或数组
Data types, variables and constants
比如,High(Byte)返回255,因为Byte类型的最大值是255,Succ(2)返回3,因为3是2的后继值。 标准函数Inc和Dec分别增加和减少一个有序数据的值。例如,Inc(I)就相当于Succ(I),而且,如果I是一个整数类型的话,也相当于I := I + 1。
Integer types(整数类型)
整数类型表示所有数字的一个子集。一般(generic)整数类型是Integer和Cardinal,只要可能就尽量使用它们,因为它们对依赖的CPU和操作系统作了优化。下表给出了32位编译器下它们的取值范围和存储格式:
类型
Integer
Cardinal 取值范围 格式 -位有符号 位无符号
基本整数类型包括Shortint、Smallint、Longint、Int64、Byte、Word和Longword。
类型
Shortint
Smallint
Longint
Int64
Byte
Word
Longword 取值范围 格式 -位有符号 -位有符号 -位有符号 -2^63..2^63-位有符号 位无符号 位无符号 位无符号
通常,对整数类型进行(算术)运算返回一个Integer类型(当前相当于32位的Longint)。只有当对一个Int64类型的整数运算时才返回Int64类型。所以,下面的代码将产生错误:
var
I: Integer;
J: Int64;
...
I := High(Integer);
J := I + 1; (I+1为Integer类型)
要在上面返回一个Int64类型的值,把I强制转换为Int64类型:
...
J := Int64(I) + 1; (现在就是Int64类型了)
要得到更多信息,请参考Arithmetic operators。
注意:大多数使用整型参数的标准例程,会把Int64数值截取为32位。但是,例程High、Low、Succ、Pred、Inc、Dec、IntToStr和IntToHex完全支持Int64参数。而且,Round、Trunc、StrToInt64和StrToInt64Def返回Int64类型的值;少数例程(包括Ord)根本不能对Int64数值进行操作。
当把整数类型的最后一个值增大或把第一个值减少时,结果将回到整数类型的开头或尾部。比如,Shortint类型的取值范围是-128..127,所以,当下面的代码执行后
var I: Shortint;
...
- 45 -
Data types, variables and constants
I := High(Shortint);
I := I + 1;
I的值将是-128。但如果打开了编译器边界检查(range-checking),上面的代码将产生运行时错误。 Character types(字符类型)
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23665-28.html
那苏联人死两千万人