第六节类型检查 1.类型检查 对数据对象的类型和使用的操作是否匹 配的一致性检査称为类型检查 2.静态检查和动态检查 ①静态检查使程序更正确更有效 ②动态检查使编程方便但影响了可读 性,且降低了执行效率
第六节 类型检查 1. 类型检查 对数据对象的类型和使用的操作是否匹 配的一致性检查称为类型检查 2. 静态检查和动态检查 ①静态检查使程序更正确更有效 ②动态检查使编程方便,但影响了可读 性,且降低了执行效率
3强类型语言 若一个语言允许所有的类型静态检查 4 Pascal是非强类型语言 编不熊确定个过程中的过程参 procedure who knows(i, j: integer procedure f) var k boolean begin k: =j< if k then f(k)else f( end
3.强类型语言 若一个语言允许所有的类型静态检查 4. Pascal是非强类型语言 ①编译时,不能确定一个过程中的过程参 数和子程序参数类型 procedure who_knows(i,j:integer;procedure f); var k:boolean; begin k:=j<i; if k then f(k) else f(j) end;
② Pascal的子界不能静态检查 如:a=b+c 且a、b、c均属于子界类型1.10 ③变体记录的标识符可以在运行时改 变 ④ Pasca没有严格规定类型的一致性 规则
②Pascal的子界不能静态检查 如: a:=b+c; 且a、b、c均属于子界类型1..10 ③变体记录的标识符可以在运行时改 变 ④Pascal没有严格规定类型的一致性 规则
第七节类转换 1.语言应该提供类型转换机制 如A+B 2.两种转换方式 ①拓展整型→实型 ②收缩实型→整型 有的“截断”有的“四舍五入
第七节 类型转换 1. 语言应该提供类型转换机制 如 A+B 2. 两种转换方式 ①拓展:整型→实型 ②收缩:实型→整型 有的“截断” ,有的“四舍五入
3.注意语言规定的转换规则 ①Foan:低级类型→高级类型 ② Pascal允许整数→实数实数→整数。但 必须显式转换( franc、 round) ③ ALGOL68提供了六种强制转换规则(隐 式的) ④Ada要求必须显式转换 例如:派生类型到母体类型的转换 P是 POSITIVER的变量、L是 LENGTH的变量 P: = POSITIVE(2 L+35)
3. 注意语言规定的转换规则 ①Fortran:低级类型→高级类型 ②Pascal允许:整数→实数;实数→整数。但 必须显式转换(frunc、round) ③ALGOL 68提供了六种强制转换规则(隐 式的) ④Ada要求必须显式转换 例如: 派生类型到母体类型的转换 P是POSITIVE的变量、L是LENGTH的变量 P:=POSITIVE(2*L+35);