fortran 循环一次后,如何让所有变量回到初始值,重新开始循环?
2个回答
2016-06-23
展开全部
DO+计数器变量 的结构,是Fortran里面非常特殊的一种循环结构,也是许多有其它语言基础的人开始学Fortran时很容易迷惑不解的地方。
DO label I=min, max, step
……
……
label continue
或者
DO I=min, max, step
……
……
END DO
都是DO+计数器变量 结构,它们的执行过程可能出乎许多人的意料,是先根据 (max-min)/step +1 计算好要循环多少次,然后一股脑的执行这么多次。你可以在循环体中引用这个变量,你甚至可以用非整型变量来当计数器(编译器自动给你进行变量类型转换,然后按整型计算次数。)
我这样解释一下原理,你就应该明白为什么不允许你在循环体内随便更改计数器变量了吧……这一特性很奇怪,不过也确实为Fortran带来了方便手工/自动并行化和编译器级别的自动优化加速等等好处。
DO label I=min, max, step
……
……
label continue
或者
DO I=min, max, step
……
……
END DO
都是DO+计数器变量 结构,它们的执行过程可能出乎许多人的意料,是先根据 (max-min)/step +1 计算好要循环多少次,然后一股脑的执行这么多次。你可以在循环体中引用这个变量,你甚至可以用非整型变量来当计数器(编译器自动给你进行变量类型转换,然后按整型计算次数。)
我这样解释一下原理,你就应该明白为什么不允许你在循环体内随便更改计数器变量了吧……这一特性很奇怪,不过也确实为Fortran带来了方便手工/自动并行化和编译器级别的自动优化加速等等好处。
追问
我在do里面在套了一个循环,然后读一个csv,跑完内循环后,再跑外循环时,这个csv为什么不能从第一行开始读,而是从最后一行接着往下读呢?
do i=1,30
do i=1,24
read(13,*,end=999)year,doy,hour,Tair
.
.
.
enddo
enddo
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询