Ошибка при использовании gfortran при инициализации массива [duplicate]

Для Windows вы можете использовать msvcrt следующим образом:

   import msvcrt
   while True:
       if msvcrt.kbhit():
           key = msvcrt.getch()
           print(key)   # just to show the result
2
задан francescalus 17 December 2015 в 12:49
поделиться

1 ответ

Предыдущий ответ неверен, и в стандарте очень ясно, как обрабатывается конструктор массива. См. В Fortran 2008 C4103.

Все элементы в конструкторе массива формы вопроса должны быть одного и того же типа объявленного типа и такого же типа. Компилятор здесь жалуется, потому что это ограничение было нарушено путем смешивания реального выражения с этими целыми выражениями.

Просто сделать первый элемент элементом реальной / двойной точности недостаточно. Возможно, компилятор использует сообщение об ошибке «конструктор массива integer(4)« как короткая рука для », первый элемент - integer(4), но не все остальные элементы:«.

Чтобы решить эту проблему, форма конструктора массива, вы должны сделать все элементы одного типа / типа (вероятно, реальную / двойную точность).

Как указано (правильно) в этом другом ответе, существует другая форма для конструкторов массива:

[ real ::0,8,0,4,26,8,0,17.5,0,0,0,17.5 ... ]

, который преобразует все элементы в указанный тип. Вы даже можете использовать эту форму для создания массива с нулевым размером:

 [ real :: ]
1
ответ дан francescalus 27 August 2018 в 02:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: