0

Is there a difference between initialization with declaration versus simple initialization? For example

recursive function foo(x) result (f)
                   real :: x, y = 0
                   real :: f    
                   ...
end function
!versus
recursive function foo(x) result (f)
        real :: x, y 
        real :: f 
        y = 0 
        ...          
end function   
Ian Bush
  • 6,996
  • 1
  • 21
  • 27

1 Answers1

1

There is an important difference!

The following code implicitly sets the save attribute for variable y. This implies that it will only be set to 0 in the first call to the function and it retains its value from the previous call for the next call.

recursive function foo(x) result (f)
                   real :: x, y = 0
                   real :: f    
                   ...
end function

In comparison the other code sets y to 0 in each call.

recursive function foo(x) result (f)
        real :: x, y 
        real :: f 
        y = 0 
        ...          
end function   
jack
  • 1,658
  • 1
  • 7
  • 18