(7)类型相容及应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
类型相容及应用
如:var a:integer; b:10..100; c:real;
则下列语句是正确的:
a:=b; c:=a;
下列语句是错误的:
b:=a; a:=c;
1.类型相容性
类型相容是对参加同一运算的两个对象的类型要求。
设有两个变量,如果满足下列条件之一,就说这两个变量的类型相容。
(1)两个变量的类型相同
a.两个变量被同一类型说明。
例如:var a,b:1..30;
b.两个变量的类型是同一类型标识符。
例如:var a:1..30; b:1..30;
c.两个变量的类型是不同的类型标识符,但在类型定义中已经说明两个标识符相同。
例如:type date=1..100; range=date; var m:data; n:range;
(2)一个变量的类型是另一个变量的子界。
如:var a:integer; b:1..100;
(3)两个变量的类型都是同一基类型的子界。
如: var a:20..50; b:20..100;
(4)两个变量的类型是基类型相容的集合类型。
(5)两个变量的类型是成分相同的字符串类型。
2.赋值相容性
赋值相容是对赋值操作的两个对象的类型要求。
设赋值语句“T:=E”左边的变量类型为T,右边表达式的类型为E,若类型T和类型E满足下列条件之一,则称他们是赋值相容的。
(1)T和E是相同的类型,而且类型不是文件类型,也不是具有文件类成
分的构造类型
(2)T是实型,而E是整型或整型的子界。
(3)T和E是类型相容的顺序类型,并且E的值不超出T所定义的值的范围
(4)T和E是类型相容的集合类型,并且E的值不超出T所定义的值的范围
(5)T和E是类型相容的字符串类型,并且E的长度不超过T的取值长度
(6)T是字符串类型,E是字符数组类型,并确E的长度不超过变量T的长度
当T和E是顺序类型或都是集合类型时,不仅要求这两个类型是相容的,而且要求E的值不超出T所定义的值的范围;否则将产生类型溢出,而这种错误只能在你运行程序时进行检查,因此必须要避免不发生这种错误。