Я хочу, чтобы инициализировать массив больших целых чисел в Fortran, я попытался:Как инициализировать массив целочисленного типа 8 в fortran?
integer(kind=8) :: XGrid(1:20)
Но целые числа остаются вид по умолчанию = 4. Позже я добавляю числа в массив:
XGrid = (/3002, 3340403,....,19460630000/)
И получаю сообщение об ошибке «Эта ошибка числовой константы вне диапазона». Поскольку он не будет вписываться в вид = 4 int, но будет в виде = 8 int.
Я также попытался объявить его как:
integer, parameter :: ik8 = selected_int_kind(8)
integer(ik8) :: XGrid(1:20)
Но это тоже не сработало.
Edit: Спасибо Vladimir F, но я пытаюсь определить массив, а не только одной переменной и как таковой, я не могу понять, как адаптировать ответ, используемый в: Is There a Better Double-Precision Assignment in Fortran 90? Будет ли это быть:
integer, parameter :: ik8 = selected_int_kind(8)
integer(ik8) :: XGrid(1:20)_ik8
XGrid = (/3002_ik8, 3340403_ik8,....,19460630000_ik8/)
или это другое? Спасибо
спасибо, вот большую помощь –
@Vladimir: Что о '(/3002.d0, 3340403.d0 ,. ..., 19460630000.d0 /) '? Является ли это эквивалентным/переносным? – Coriolis
@Ian: Извините, я имею в виду, если массив реален. Если я использую 'integer, parameter :: real64 = SELECTED_REAL_KIND (15,307)' как тип точности, эквивалентен ли запись '3002.d0' и' 3002_real64'? – Coriolis