Pascal 边界检查(标准)
Pascal bounds checking (standard)
一个简单的问题:Pascal 是否在原始标准 (ISO 7185) 中包含边界检查?
我在任何地方都看不到它 (http://www.pascal-central.com/standards.html) 或者可能我只是瞎了眼。
我知道在一些 Pascal 编译器中我可以选择在哪里检查边界或不检查边界,对我来说重要的是它在那个标准中是怎样的。
我有一段时间没有看过标准了,所以我的知识有点生疏,但是,是的,边界检查包含在标准 (ISO 7185) 中。该标准要求 1. 数组索引有效(参见Indexed-variables), and 2. all values are assignment compatible with the variable being assigned to (see assignment compatibility)。
然而,该标准还指出错误是 "A violation by a program of the requirements of this International Standard that a processor is permitted to leave undetected"(参见 Error)。无效的数组索引和超出范围的分配违反了该标准,并且是错误的。
一个简单的问题:Pascal 是否在原始标准 (ISO 7185) 中包含边界检查?
我在任何地方都看不到它 (http://www.pascal-central.com/standards.html) 或者可能我只是瞎了眼。
我知道在一些 Pascal 编译器中我可以选择在哪里检查边界或不检查边界,对我来说重要的是它在那个标准中是怎样的。
我有一段时间没有看过标准了,所以我的知识有点生疏,但是,是的,边界检查包含在标准 (ISO 7185) 中。该标准要求 1. 数组索引有效(参见Indexed-variables), and 2. all values are assignment compatible with the variable being assigned to (see assignment compatibility)。
然而,该标准还指出错误是 "A violation by a program of the requirements of this International Standard that a processor is permitted to leave undetected"(参见 Error)。无效的数组索引和超出范围的分配违反了该标准,并且是错误的。