gpt4 book ai didi

loops - 为什么 Fortran DO 循环索引大于循环后的上限?

转载 作者:行者123 更新时间:2023-12-03 16:18:10 25 4
gpt4 key购买 nike

我正在查看用 Fortran 编写的空气质量模型的代码,并且对 fortran 从 do 循环中传递变量的方式有一些疑问。

这个非常简单的例子说明了我的意思:

   PROGRAM carla
IMPLICIT NONE
!
INTEGER, PARAMETER :: LM = 24, DEZASSEIS = 16
INTEGER :: L, VARIAVEL, SOMA
!
DO L=1,LM
WRITE(*,*) 'L = ', L
END DO
!
WRITE(*,*) 'I am now ouside of the DO loop.'
WRITE(*,*) 'I would expect L=LM=24... And SOMA=40'
WRITE(*,*) 'L = ', L
SOMA = DEZASSEIS + L
WRITE(*,*) 'SOMA = ', SOMA
END PROGRAM carla

我希望 L=LM=24... 而 SOMA=40...
但相反,我得到:
   L =           25
SOMA = 41

我不明白为什么一旦我们在 DO 循环之外,L 不会保持最后一个值的假设(因此 SOMA 将等于 40),并继续增加......

有人可以给我一个提示吗?

最佳答案

Fortran 不是这样工作的。 ( 这不是 Matlab :P )

Exercise caution if using the index variable outside the DO loop because the variable is incremented at the end of the loop, i.e., it will be stepsize more than the final value.



http://www.oc.nps.edu/~bird/oc3030_online/fortran/do/do.html

这解释了为什么 L=25循环后。

编辑:以下不正确。请参阅下面的 M.S.B. 评论

In Fortran the DO-variable ... should never be referenced outside the loop without first explicitly assigning a value to it. - http://www.esm.psu.edu/~ajm138/fortranexamples.html

关于loops - 为什么 Fortran DO 循环索引大于循环后的上限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9880995/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com