Использование арифметики c если в фортране 77 - PullRequest
2 голосов
/ 28 января 2020

У меня вопрос по арифметике c если в f77. Если я получаю его правильно, он должен был использоваться таким образом:

if(integer) st-,st0,st+

и означал, что st- было сделано, если целое число было <0, st0 было сделано, если целое число = 0, и st + для целое число> 0.

У меня есть такой случай:

 IF(number) test=0

Я прав, если выражение test = 0 будет выполнено, если число меньше 0?

Спасибо

1 Ответ

1 голос
/ 28 января 2020

Ваш пример кода является нормальным логическим if, но с целым числом вместо логического выражения для условия. Некоторые компиляторы (Intel и предшественники - DE C, Compaq) допускают, что в качестве нестандартного расширения gfortran этого не делает. Насколько я знаю, даже с такой опцией, как -fdec.

См. Неявное целочисленное преобразование <-> логическое в Фортране, если оператор для более.

Что арифметика c if означает, что она выбирает одну из трех ветвей с помощью числовых c меток операторов, вы не можете ставить исполняемые операторы после арифметики c if.

if(integer) label-,label0,label+

Это означает, например, ,

if (i) 10, 20, 30

10 do something

20 do something else

30 do something else
...