我有点了解fortran中 data 语句的行为。但是我不知道是否有任何情况是首选还是应该避免
答案 0 :(得分:1)
数据语句不是过时的。但是,自Fortran 95以来,它在可执行语句中的使用已被废弃。latest Fortran standard的附录B提供了废弃功能的详细信息。
B.3.5可执行文件中的DATA语句。语句排序 规则允许DATA语句在之后的程序单元中的任何位置出现 规格说明。定位数据的能力 可执行语句中的语句很少 使用,不必要和潜在的错误来源。
梅特卡夫(Metcalf),科恩(Cohen&Reid)和科恩&里德(Cohen&Reid)在现代Fortran解释的第140页(2011年的绿色版本,不是我没有的较新的红色版本)
我们建议使用类型声明语句而不是数据 语句,但仅在部分语句中使用数据语句 变量将被初始化。
考虑到其中有两位作者是WG5的成员(负责Fortran的开发---实际上,所有三位作者都是成员;我不确定Michael Metcalf),我们可以可以肯定地说,除非在程序单元中的可执行语句之前初始化变量的一部分,否则应避免使用数据语句。
答案 1 :(得分:1)
我个人喜欢data
语句,因为用它进行变量的初始化比通过普通赋值更清楚。例如:
type gene
character :: gene
integer :: depth
integer :: delta
end type
type(gene) :: pool(8)
! initializing in a data statement looks nicer in this case
data pool%gene / '#', 'U', 'R', '+', '-', '*', '/', '^'/
data pool%depth / 0 , 0 , 1 , 2 , 2 , 2 , 2 , 2 /
data pool%delta / 1 , 1 , 0 , -1 , -1 , -1 , -1 , -1 /