你能投出整个 Fortran 数组吗

Can you cast a whole Fortran array

以下代码是否适用于所有 Fortran 编译器?它在 Intel 中运行良好,但不确定它是否符合标准:

real, allocatable :: rArray(:)
double precision, allocatable :: dArray(:)

allocate(rArray(10))
rArray = 1.0

allocate(dArray, SOURCE=dble(rArray))

标准(至少 F2008)允许这种源分配(不是真正的转换,你正在创建一个临时并将其复制到分配的数组),但我最近尝试的 gfortran 版本不支持.对于 gfortran,即使您根本不更改类型,您目前也必须提供分配数组的边界:

allocate(dArray(10), SOURCE=somearray)