一个简单的问题:Pascal 是否在原始标准(ISO 7185)中包含边界检查?
我在任何地方都看不到它(http://www.pascal-central.com/standards.html),或者我可能只是盲人。
我知道在一些 Pascal 编译器中我可以选择在哪里检查边界,对我来说重要的是它在该标准中的情况。
一个简单的问题:Pascal 是否在原始标准(ISO 7185)中包含边界检查?
我在任何地方都看不到它(http://www.pascal-central.com/standards.html),或者我可能只是盲人。
我知道在一些 Pascal 编译器中我可以选择在哪里检查边界,对我来说重要的是它在该标准中的情况。
我有一段时间没有看过标准,所以我的知识有点生疏,但是是的,边界检查包含在标准中(ISO 7185)。该标准要求 1. 数组索引是有效的(参见Indexed-variables),以及 2. 所有值都与被分配的变量赋值兼容(参见assignment compatibility)。
然而,该标准还指出,错误是“程序违反本国际标准的要求,允许处理器不被发现”(参见错误)。无效的数组索引和超出范围的分配违反了该标准,并且是错误的。