Pascal的赋值相容和类型相容

OI爱好者(OIFans.cn)
www.oifans.cn 

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)一个变量的类型是另一个变量的子界。
    (3)两个变量的类型都是同一基类型的子界。
    (4)两个变量的类型是基类型相容的集合类型。
    (5)两个变量的类型是成分相同的串类型。

2.赋值相容性   
    赋值相容是对赋值操作的两个对象的类型要求。设赋值语句“:=”左边的变量类型为T,右边表达式的类型为E,若类型T和类型E满足下列条件之一,则称他们是赋值相容的。
     (1)T和E是相同的类型,而且类型不是文件类型,也不是具有文件类成分的构造类型。
     (2)T是实型,而E是整型或整型的子界。
     (3)T和E是类型相容的顺序类型,并且E的值不超出T所定义的值的范围
     (4)T和E是类型相容的集合类型,并且E的值不超出T所定义的值的范围
     (5)T和E是类型相容的串类型。
    当T和E是顺序类型或都是集合类型时,不仅要求这两个类型是相容的,而且要求E的值不超出T所定义的值的范围;否则将产生类型溢出,而这种错误只能在你运行程序时进行检查,因此你必须要避免发生这种错误。