Предположим, у меня есть следующий код
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 могли оцениваться, даже если это не влияет на конечный результат?