Arrays 将MINLOC与Fortran一起使用:赋值中的秩0和1不兼容 提供错误消息的版本 错误消息
main.f95:5.3: 索引=最小位置(a,掩码=(a>5)) 1. 错误:在(1)处的分配中不兼容的列组0和1 工作版本 搜寻 我可以找到相关的讨论,但我觉得它不够详细,无法理解其中的区别。提出了一个重要的观点:MINLOC返回一个数组,即使它只是一个数字,它仍然是一个数组 可以像上面提到的那样将索引声明为数组,也可以使用临时数组Arrays 将MINLOC与Fortran一起使用:赋值中的秩0和1不兼容 提供错误消息的版本 错误消息,arrays,fortran,Arrays,Fortran,main.f95:5.3: 索引=最小位置(a,掩码=(a>5)) 1. 错误:在(1)处的分配中不兼容的列组0和1 工作版本 搜寻 我可以找到相关的讨论,但我觉得它不够详细,无法理解其中的区别。提出了一个重要的观点:MINLOC返回一个数组,即使它只是一个数字,它仍然是一个数组 可以像上面提到的那样将索引声明为数组,也可以使用临时数组 integer :: temp(1) ... temp=minloc(dist) index=temp(1) 也可以使用DIM参数来避免手动篡改数据类型,如
integer :: temp(1)
...
temp=minloc(dist)
index=temp(1)
也可以使用DIM参数来避免手动篡改数据类型,如M.S.B的回答中所述。您可以通过使用
DIM
参数来修复第一个版本,从minloc
获取标量返回:
index = MINLOC(a, DIM=1, MASK=(a > 5))
注意:除非每行放置多个语句,否则语句结尾不需要分号。Fortran不是C。删除了分号;它们是在尝试对另一条错误消息进行故障排除时意外添加的。。。
integer :: temp(1)
...
temp=minloc(dist)
index=temp(1)
index = MINLOC(a, DIM=1, MASK=(a > 5))