繁体   English   中英

Fortran中是否需要DATA语句?

[英]is the DATA statement needed in modern Fortran?

我有点知道fortran中数据语句的行为。 但是我不知道是否有什么情况是首选还是应该避免

我个人喜欢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 /

数据语句不是过时的。 但是,自Fortran 95起,它在可执行语句中的使用已被废弃。 最新的Fortran标准的附录B提供了废弃功能的详细信息。

B.3.5可执行文件中的DATA语句。 语句排序规则允许DATA语句出现在规范语句之后的程序单元中的任何位置。 在可执行语句之间定位DATA语句的功能很少使用,这是不必要的,并且是潜在的错误来源。

梅特卡夫(Metcalf),科恩(Cohen)和里德(Reid)在《现代Fortran解释》(2011年的绿色版本,而不是我没有的较新的红色版本)的第140页上写道

我们建议使用类型声明语句而不是data语句,但是仅在变量的一部分要初始化时必须使用data语句。

鉴于其中有两位作者是WG5的成员(负责Fortran的开发---实际上,所有三位作者都是成员;我不确定Michael Metcalf),我们可以肯定地说除非在程序单元中的可执行语句之前初始化变量的一部分,否则应避免使用数据语句。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM