b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

pascal 视频教程_pascal和basic_pascal选择排序(31)

电脑杂谈  发布时间:2016-12-28 07:02:37  来源:网络整理

实际上,枚举类型是这样一个子界类型:它的最小值和最大值,分别对应于声明时的最小序数和最大序数。在上面的例子中,Size类型的最小序数为5,最大为15,所以它有11个可能的值(因此,类型array[Size] of Char表示一个有11个元素的字符数组)。虽然只有其中的3个值有名称,但其它值通过类型转换、或通过一些例程(比如Pred、Succ、Inc和Dec)是可以访问的。在下面的例子中,Size取值范围内的‘无名’值被赋给X:

var X: Size;

X := Small; // Ord(X) = 5

X := Size(6); // Ord(X) = 6

Inc(X); // Ord(X) = 7

若一个值没有明确指定序数,它的取值将是前一个值的序数值加上1;如果第1个值没有指定序数,它的序数为0。所以,在下面的声明中:

type SomeEnum = (e1, e2, e3 = 1);

SomeEnum只有两个可能的值:Ord(e1)返回0,Ord(e2)返回1,Ord(e3)也是1。因为e2和e3有相同的序数,它们表示相同的值。

Subrange types(子界类型)

子界类型表示其它有序类型(称为基础类型)的一个子集:它的形式为Low..High。这里,Low和High是同一种有序类型的常量表达式,并且,Low比High要小。以上面的形式,就定义了一个子界类型,它包括Low和High之间的所有值。比如,若你声明枚举类型:

type TColors = (Red, Blue, Green, Yellow, Orange, Purple, White, Black);

你就可以这样定义一个子界类型:

type TMyColors = Green..White;

这里,TMyColors就包含值Green、Yellow、Orange、Purple和White。

你能使用数字常量和字符(长度为1的字符串)定义子界类型:

type

SomeNumbers = -128..127;

Caps = 'A'..'Z';

当使用数字或字符常量定义一个子界类型时,基础类型是最小的整数类型或包含指定区间的最小字符类型(由编译器决定)。

- 48 -

Data types, variables and constants

Low..High构造本身就相当于一个类型名称,所以,你可以直接使用它来声明变量。例如:

var SomeNum: 1..500;

定义了一个整型变量,它可以是1到500中的任何值。 对子界类型,每个值的序数取自基础类型(在上面的第一个例子中,若Color变量的值为Green,Ord(Color)将返回2,而不管它是TColors类型或TMyColors类型);而且,它的值不会回转到开头或结尾,即使它的基础类型是整型或字符类型;当因增大或减小而产生越界时,它的值只是简单地转换成基础类型的值。因此,虽然

type Percentile = 0..99; var I: Percentile; ...

I := 100;

产生一个错误,但

...

I := 99; Inc(I);

把值100赋给I(除非打开编译器的边界检查功能)。

在子界类型的定义中,常量表达式的使用会使语法分析出现困难。在任何类型的声明中,当‘=’后面的第一个(有意义的)字符是左圆括号时,编译器就假定是在定义一个枚举类型。因此,下面的代码 const

X = 50; Y = 10; type

Scale = (X - Y) * 2..(X + Y) * 2;


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23665-31.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 罗皓
      罗皓

      让百姓有了更大选择权

    热点图片
    拼命载入中...