Проверка границ Паскаля (стандартная)
Простой вопрос: включает ли Паскаль проверку границ в исходном стандарте (ISO 7185)?
Я нигде не вижу упоминаний об этом ( http://www.pascal-central.com/standards.html) или, может быть, я только слепой.
Я знаю, что в некоторых компиляторах Pascal я могу выбирать, где проверять границы или нет, для меня важно то, как обстоят дела с этим стандартом.
1 ответ
Я давно не смотрел на стандарт, поэтому мои знания немного устарели, но да, проверка границ включена в стандарт (ISO 7185). Стандарт требует, чтобы 1. индексы массива были действительными (см. Indexed-переменные), и 2. все значения совместимы по присваиванию с присваиваемой переменной (см. Совместимость по присваиванию).
Однако в стандарте также говорится, что ошибкой является "Нарушение программой требований настоящего международного стандарта, что процессору разрешено оставлять необнаруженным" (см. " Ошибка"). Неправильная индексация массива и присвоение вне диапазона являются нарушениями этого стандарта и являются ошибками.