代码之家  ›  专栏  ›  技术社区  ›  Stefano Borini

Fortran对声明和保存属性的赋值

  •  16
  • Stefano Borini  · 技术社区  · 14 年前

    在fortran 95中,如果在声明处指定一个变量

    integer :: var = 0
    

    integer, save :: var = 0
    

    因此,该变量在例程执行后被保留(相当于 static

    2 回复  |  直到 14 年前
        1
  •  11
  •   Wildcat    14 年前

    我不认为这种行为背后有什么道理。

    但据我所知,斯特凡诺,你用错了术语。在你的代码里 没有赋值语句 仅使用初始化表达式(0)初始化变量(var)。

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

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

    this

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

        2
  •  9
  •   M. S. B.    14 年前