#gfortran
#gfortran
Вопрос:
Согласно этому, gfortran может выполнять целочисленно-логическое преобразование, но я получаю эту ошибку:
if (.not.bDropped.and.(zz_unif01() .lt. (1 - (Test_Dru
1
Error: Operand of .not. operator at (1) is INTEGER(4)
Я знаю, что было бы лучше изменить код с .not.bDropped
на (bDropped.eq.0)
, но это было бы непросто, потому что это сгенерированный код.
Я пробовал различные -std=xxx
флаги, но они не имели никакого значения.
Комментарии:
1. Добро пожаловать в мир строгой типизации! 🙂 Настройте свой генератор кода. Это единственный способ.
2. @kemiisto: Grr… Да, это то, что мне приходится делать.
Ответ №1:
Последняя строка на странице, на которую вы ссылаетесь, гласит
Однако в if-операторах нет неявного преобразования ЦЕЛЫХ значений, [...].
Я бы предположил, что это как-то связано с этим.
Редактировать: Похоже, это не вся правда. Простое выполнение l1 = .not. 0
(когда l1
является логической переменной) выдает ту же ошибку, которую вы получили. Таким образом, в этом случае также нет неявного преобразования.
Комментарии:
1. я думаю, было бы достаточно использовать ==, если вы хотите рассматривать это как логическое значение, например: do while(eof (1) == 0) или что-то в этом роде