回 帖 发 新 帖 刷新版面

主题:关于forall的一个程序,怎么运行出来结果与用do做的不一样

program main
  implicit none

  integer f(10)
  integer i

  f(1)=0
  f(2)=1
  
  forall(i=3:10)
    f(i)=f(i-1)+f(i-2)
  end forall
  
  write(*,"(10I4)") f
  
  stop
end program
运行结果0 1 1 1 0 0 0 0 0 0

回复列表 (共2个回复)

沙发

并行的概念

可看作8条f(i)=f(i-1)+f(i-2)语句同时执行  互不干扰  并没有前后顺序

这使得f(i-1)与f(i-2)的值并没有更新  依旧是初值

板凳


楼上正解,谢谢

我来回复

您尚未登录,请登录后再回复。点此登录或注册