我正在测试一个过程,该过程为其编写了一个子例程,并在其中声明了参数a
Module f1
implicit none
contains
Subroutine function1 (var)
implicit none
integer, intent(in) :: var
integer, parameter :: a=3.5
print*, "initial var is ", var
end Subroutine function1
end module f1
现在,我以以下方式在主程序中调用了该子例程
program f2
use f1, only: function1
implicit none
integer :: y
integer :: z,x
integer :: a
y=2
x=1
CALL function1 (x)
z=x+y+a
print*, "My sum is ", z
end program f2
我的参数a
的值被更改。当我编译并链接程序时,得到以下输出
initial var is 1
My sum is 543297931
当我打印a
的值时,我得到了
My parameter is 543297928
我无法理解为什么我的价值得到改变。我还检查了一些导致此类问题的常见程序,但没有得到任何提示。