ошибка сегментации, созданная тестами fortran if

Предположим, у меня есть следующий код

    IF (a.eq.0.or.M(a)) THEN

С a целым числом и M(1:3) массивом логических . Если a равно 0, то я ожидаю, что первый тест поймает его, а второй никогда не будет оцениваться. Однако, если я использую компилятор intel fortran и компилирую с

    -check all

, я получаю ошибку сегментации. Без этого параметра отладки ошибки не возникает. Это стандартное поведение? Для многих языков в руководстве прямо сказано, что для

    IF (A.or.B) THEN

если A истинно, то B не вычисляется. Требует ли стандарт Фортрана, чтобы A и B могли оцениваться, даже если это не влияет на конечный результат?

5
задан Mathieu Dutour Sikiric 7 March 2012 в 21:36
поделиться