5.1.30 Поразрядные логические операторы
С флагом -fdec GNU Fortran ослабляет ограничения на типы для логических операторов, чтобы разрешить целочисленные операнды и выполнить соответствующую поразрядную операцию вместо этого. Этот флаг предназначен только для совместимости и следует избегать его использования в новом коде. Рассмотрите:
INTEGER :: i, j i = z'33' j = z'cc' print *, i .AND. j
В этом примере, скомпилированном с -fdec, GNU Fortran заменит операцию .AND. вызовом встроенной функции , что даст результат поразрядной конъюнкции IAND — Bitwise logical andi и j.
Обратите внимание, что это преобразование произойдёт, если хотя бы один операнд имеет целочисленный тип. В результате логический операнд будет преобразован в целое число, когда другой операнд является целым числом в логической операции. В этом случае .TRUE. преобразуется в 1 и .FALSE. в 0.
Вот соответствие логических операторов встроенным поразрядным функциям при использовании -fdec:
| Оператор | Встроенная функция | Поразрядная операция |
|---|---|---|
.NOT. |
|
дополнение |
.AND. |
|
пересечение |
.OR. |
|
объединение |
.NEQV. |
|
исключающее ИЛИ |
.EQV. |
|
дополнение от исключающего ИЛИ |
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-14.2.0/gfortran/Bitwise-logical-operators.html