Декларатор массива в Фортране без нижней и верхней границ 0 - PullRequest
1 голос
/ 09 марта 2011

Согласно информации стандартов Fortran, я мог найти (F77, F90 / 95) декларатор массива, в котором нет нижней границы, предполагается, что эта нижняя граница равна 1. Поскольку верхняя граница должна быть больше или равна нижнейСвязанный, это сделало бы следующее заявление недопустимым:

INTEGER A(0)

Тем не менее, я не могу заставить ни ifort, ни gfortran жаловаться на это утверждение.Разве компилятор не обязан отмечать это как ошибку?

Ответы [ 2 ]

5 голосов
/ 10 марта 2011

Поскольку верхняя граница должна быть больше или равна нижней границе, это сделает следующее утверждение недопустимым.

Стандарт Фортран 2008:

5.3.8.2 Массив явной формы
[...] 3 Значения каждой нижней и верхней границ определяют границы массива вдоль определенного измерения и, следовательно, экстент массива в этом измерении. Если появляется нижняя граница, она определяет нижнюю границу; в противном случае нижняя граница равна 1. Значение нижней границы или верхней границы может быть положительным, отрицательным или нулевым. Диапазон индекса массива в этом измерении - это набор целочисленных значений между нижними и верхними границами, включая верхнюю границу, при условии, что верхняя граница не меньше нижней границы. Если верхняя граница меньше нижней границы, диапазон пуст, экстент в этом измерении равен нулю, а массив имеет нулевой размер.

1 голос
/ 09 марта 2011

Прошло много времени с тех пор, как я написал код на языке Fortran, но, похоже, я вспоминаю, что, если указывается только одно число, оно дает длину массива (нижняя и верхняя границы неявно становятся 1 и length). Итак, ваш код создает массив нулевой длины.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...