2.4. Оператор присваивания. Операции

Оператор присваивания записывается в виде:

имя = выражение

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

В языке FORTRAN существует пять арифметических операций: сложение + , вычитание - , умножение * , деление / , возведение в степень ** . Операция ** имеет наивысший приоритет и выполняется в последовательности справа налево, остальные операции выполняются слева направо. Операция деления / для веще­ственных операндов означает вещественное деление, для целых операндов - де­ление нацело (точно так же, как в языке C). Если операнды арифметической опе­рации имеют разные типы, то они приводятся к одному типу согласно правилу старшинства типов : INTEGER*1 < INTEGER*2 < INTEGER*4 < REAL*4 < REAL*8 < COMPLEX*8 < COMPLEX*16 . Если один операнд имеет тип REAL*8, а второй - COMPLEX*8, то оба они приводятся к типу COMPLEX*16. Кроме того, компилятор следит за корректностью выполнения целочисленных вычислений, поэтому результат арифметической операции над операндами INTEGER*1 будет иметь тип INTEGER*2, а результат арифметической опера­ции над операндами INTEGER*2 будет иметь тип INTEGER*4.

Операции сравнения записываются в виде .LT. - меньше, .LE. - меньше либо равно, .GT. - больше, .GE. - больше либо равно, .EQ. - равно, .NE. - не равно. Они применимы к арифметическим и символьным операндам. Для комплексных операндов определены лишь операции .EQ. и .NE. Результат операции сравне­ния имеет тип LOGICAL.

Логические операции применимы к логическим операндам и записываются в виде .NOT. - логическое отрицание, .AND. - логическое "и", .OR. - логическое "или" , .EQV. - эквивалентно, .NEQV. - не эквивалентно; обратите внимание, что ни одна операция сравнения, в том числе .EQ. и .NE., к логическим операндам неприменима.

Для символьных операндов определена только одна операция - операция сцепления // .

Приоритеты операций в языке FORTRAN определены следующим образом : ** > { * , / } > { + , - } > // > {.EQ. , .NE. , .LT. , .LE. , .GT. , .GE.} > .NOT. > .AND. > .OR. > .EQV. > .NEQV.