В Fortran> = 90, лучший подход используют встроенные функции для определения точности, что нужно - это гарантирует как портативность и что вы получите то, что вам нужно. Например, чтобы получить целые числа я и my_int, которые будут поддерживать по крайней мере 8 десятичных цифр, вы можете использовать:
integer, parameter :: RegInt_K = selected_int_kind (8)
integer (kind=RegInt_K) :: i, my_int
Определив «RegInt_K» (или любое имя вы выбрали) в качестве параметра, вы можете использовать его в течение ваш код как символ. Это также позволяет легко изменять точность.
Запрос на 8 или 9 десятичных цифр обычно будет получать 4-байтовое целое число.
integer * 4 является общим расширением, возвращаясь к старым FORTRAN, чтобы указать 4-байтовое целое число.
integer (4) или integer (RegInt_K) являются short для integer (kind = 4) или integer (kind = RegInt_K). integer (4) не совпадает с целым числом * 4 и не переносится - в стандарте языка не указаны числовые значения видов. Большинство компиляторов используют тип = 4 для 4-байтовых целых чисел - для этих компиляторов integer * 4 и integer (4) будет предоставлен один и тот же целочисленный тип, но есть исключения, поэтому целое число (4) не переносится и лучше избегать ,
Подход для реалов аналогичен.
UPDATE: если вы не хотите указывать числовые типы с требуемой точностью, но вместо того, чтобы использовать хранилище, которое они будут использовать, Fortran 2008 предоставляет метод. вещественные числа и целые числа могут быть заданы числом бит хранения после use
ING в ISO_FORTRAN_ENV
модуле, например, для 4-байтовый (32 бита) целого числа:
use ISO_FORTRAN_ENV
integer (int32) :: MyInt
В руководстве gfortran содержит документацию в соответствии с «внутренним модули».
Это было потрясающее объяснение! оглушающий! отлично! теперь это кристально ясно.: D Большое спасибо! – Sam