program para
implicit none
real(8)::f
call func(1.0d0,1.0d0)
print*,f
end program
subroutine func(x,y)
implicit none
real(8),intent(in) :: x, y
real(8) :: f
f = 2*x+3*y
end subroutine
~
~
问题.png (114.21 KB, 下载次数: 182)
program main
use iso_fortran_env, only: real64
implicit none
real(real64) :: f
call func(1._real64, 1._real64, f)
print *, f
contains
subroutine func(x, y, ret)
real(real64), intent(in) :: x, y
real(real64), intent(out) :: ret
ret = 2._real64*x + 3._real64*y
end subroutine func
end program main
唐汉 发表于 2022-4-3 01:35
你在主程序里面声明了一个f,在子程序里面又声明了一个f,而且,在子程序里面的f没有输出。像这种情况你可 ...
sqs 发表于 2022-4-3 13:47
好的,那为什么我每次执行a.out的时候输出的结果都不一致呢
program para
implicit none
real(8)::f
common /d1/ f
call func(1.0d0,1.0d0)
print*,f
end program para
subroutine func(x,y)
implicit none
real(8),intent(in) :: x, y
real(8) :: f
common /d1/ f
f = 2*x+3*y
end subroutine func
program para
use , intrinsic :: iso_fortran_env, only: R8 => real64
implicit none
write(*,*) func(1.0_R8,1.0_R8)
contains
Pure real(R8) Function func(x,y) result(f)
real(R8),intent(in) :: x, y
f = 2._R8*x+3._R8*y
End Function func
end program para
布衣龙共 发表于 2022-4-3 21:24
楼主这个过程,是非常适合用函数的。
PS:任何程序,无论大小,都不推荐使用common,这东西就让它逝去吧。
...
布衣龙共 发表于 2022-4-3 21:24
楼主这个过程,是非常适合用函数的。
PS:任何程序,无论大小,都不推荐使用common,这东西就让它逝去吧。
...
program main
use iso_fortran_env, only: real64
implicit none
real(real64) :: f
call func(1._real64, 1._real64)
print *, f
contains
subroutine func(x, y)
real(real64), intent(in) :: x, y
f = 2._real64*x + 3._real64*y
end subroutine func
end program main
sqs 发表于 2022-4-4 16:05
而且我不增加输出端,而是直接对主程序当中的变量进行赋值,这样可以么[mw_shl_code=fortran,true]progra ...
sqs 发表于 2022-4-4 16:05
而且我不增加输出端,而是直接对主程序当中的变量进行赋值,这样可以么[mw_shl_code=fortran,true]progra ...
欢迎光临 Fortran Coder (http://bbs.fcode.cn/) | Powered by Discuz! X3.2 |