gpt4 book ai didi

fortran - 声明和SAVE属性陷阱的Fortran分配

转载 作者:行者123 更新时间:2023-12-03 14:10:34 25 4
gpt4 key购买 nike

在fortran 95中,如果在声明时分配变量

integer :: var = 0

它等效于
integer, save :: var = 0

因此,该变量将在例行执行后保留(相当于C语言中的 static),并且在再次调用时不会重新初始化。这种(恕我直言)危险行为背后的原理/技术问题是什么?

最佳答案

我认为这种行为没有任何根据。

但据我所知Stefano,您使用了错误的术语。在您的代码中,没有赋值语句仅使用初始化表达式(0)进行变量(var)初始化。

integer :: var = 0 ! type declaration & initialization

integer :: var ! type declaration
var = 0 ! assignment

因此,这似乎只是委员会的设计决定。如果我们有这样的表达式(在类型声明语句中带有等号),那就是初始化而不是赋值。并且初始化仅在程序(而非过程)执行期间发生一次。

但是,做出此决定可能有一些历史原因。看一看 this线程。

今天,这种行为很危险,因为许多其他广泛使用的语言遵循有关初始化/赋值的另一种约定。

关于fortran - 声明和SAVE属性陷阱的Fortran分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3352741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com