fortran90 或 gfortran 的约定 - 整数、实数、双精度和数组的声明

Conventions for fortran90 or gfortran - Declaration of integer, real, double and array

我想获得有关 Fortran90 或 gfortran 声明的说明。

首先,对于声明整数和双精度,似乎约定是:

! i is an integer
integer::i 

而我也看到了一个简单的声明(在我的代码中,我使用了这个):

! i is an integer
integer i 

即没有“::”符号。

这个声明的标准是什么(integer, real, double)?

声明数组也一样吗?即,符号 '::' 是否像以下声明中那样是必需的:

! declaration of array "list" with 10 elements
double precision,dimension(10)::list

我寻找一个更简单的数组声明,但没有成功。

最后,我还对可分配数组使用了以下语法:

! Arrays 
double precision, allocatable :: x(:,:)
! Allocation of 2D Array
allocate(x(1:size_x,1:size_y))

这是声明可分配数组的最新方法(我指的是 Fortran 中的最新约定或规范)吗?

此致

ps:不太了解fortran不同版本的演进(比如fortran90gfortran

的区别)

在变量声明中,出于以下两个原因之一,需要 ::

  • 声明语句中有属性列表;
  • 语句中有显式初始化。

首先我们看到如

integer, dimension(5) :: i
integer, target :: j

第二次

integer :: k=1

在需要 optional/not 时使用 :: 是无害的。虽然令牌在 F90 之前的 Fortran 标准中无效。

最后,请注意 integer i(5) 不需要 ::。我看到有人建议始终使用 :: 以保持一致性和节省工作量 learning/applying 规则。