调用时更改Fortran子例程参数

时间:2018-07-23 11:50:27

标签: fortran

我正在测试一个过程,该过程为其编写了一个子例程,并在其中声明了参数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

我无法理解为什么我的价值得到改变。我还检查了一些导致此类问题的常见程序,但没有得到任何提示。

0 个答案:

没有答案