Exa*_*ale 13 fortran fortran90
声明变量时使用双冒号有区别吗?
real(8) :: a
real(8) b
Run Code Online (Sandbox Code Playgroud)
这两个显然都做同样的事情.这些除了风格之间有什么区别吗?
我知道我们可以初始化变量并添加属性,如下所示
real(8), intent(in), parameter :: a = 4, b = 2
Run Code Online (Sandbox Code Playgroud)
但除此之外,只是声明一个普通的旧的real或integer没有属性而不是初始化是否有任何区别?
此外,这与SAVE属性有关吗?在我的一些代码中有一段时间出现意外行为,我在调用之间保存函数的结果,这迫使我每次调用函数时显式地将变量设置为零,即使该SAVE属性不是由我设置的.
Rob*_*Rob 13
在您的第一个示例中,::不需要,可以省略.一般语法是:
type-spec [ [,attr-spec]... :: ] entities
Run Code Online (Sandbox Code Playgroud)
在你的第一个案例中:
type-spec: real(8)
entities: a and b
Run Code Online (Sandbox Code Playgroud)
语法定义中的方括号表示该部分是可选的.但是,如果您指定attr-spec(像intent(in)或parameter),则::需要.特别:
[ [, attr-spec] :: ]
Run Code Online (Sandbox Code Playgroud)
意味着它::是可选的并且attr-spec是可选的,但如果你给,attr-spec你必须也给出::.
我怀疑人们养成了提供::每一个宣言的习惯.
在示例中:
real :: a=4.5
Run Code Online (Sandbox Code Playgroud)
要编写的=4.5力量可能涵盖你问题的第二部分.aSAVE