以下代码是否适用于所有Fortran编译器?它在英特尔工作正常,但不确定它是否符合标准:
real, allocatable :: rArray(:)
double precision, allocatable :: dArray(:)
allocate(rArray(10))
rArray = 1.0
allocate(dArray, SOURCE=dble(rArray))
答案 0 :(得分:1)
这个源分配(实际上不是强制转换,你创建一个临时的并将它复制到分配的数组)是标准允许的(至少是F2008),但我最近尝试过的gfortran版本不支持。对于gfortran,即使您根本没有更改类型,您当前也必须提供已分配数组的边界:
allocate(dArray(10), SOURCE=somearray)