Loops 循环后Fortran DO循环索引的值
循环究竟是如何工作的 假设您有以下循环:Loops 循环后Fortran DO循环索引的值,loops,fortran,do-loops,Loops,Fortran,Do Loops,循环究竟是如何工作的 假设您有以下循环: do i=1,10 ...code... end do write(*,*)I 为什么打印的是11,而不是10 但当循环因故障而停止时 if(something) exit I与预期的一样(例如I=7,由于其他值达到其极限而退出) 在do循环确定必须终止之前,i的值转到11。11的值是i的第一个值,它导致1的结束条件失败。10。因此,循环完成后,i的值为11 以伪代码形式输入: 1) i <- 1 2) if i > 10 goto 6
do i=1,10
...code...
end do
write(*,*)I
为什么打印的是11,而不是10
但当循环因故障而停止时
if(something) exit
I与预期的一样(例如I=7,由于其他值达到其极限而退出) 在
do
循环确定必须终止之前,i
的值转到11
。11
的值是i
的第一个值,它导致1
的结束条件失败。10
。因此,循环完成后,i
的值为11
以伪代码形式输入:
1) i <- 1
2) if i > 10 goto 6
3) ...code...
4) i <- i + 1
5) goto 2
6) print i
因此,在这种情况下,
i
显然是7
。在do
循环确定它必须终止之前,i
的值转到11
。11
的值是i
的第一个值,它导致1
的结束条件失败。10
。因此,循环完成后,i
的值为11
以伪代码形式输入:
1) i <- 1
2) if i > 10 goto 6
3) ...code...
4) i <- i + 1
5) goto 2
6) print i
很明显,在这种情况下,
i
将是7
。我想强调的是,迭代计数控制循环范围的执行次数。有关更多详细信息,请参阅第98-99页
按顺序执行以下步骤:
MAX(INT((m2 –m1+m3)/m3),0)
1.2如果省略循环控制,则不计算迭代计数
1.3 DO语句执行完成后,执行周期开始2.3迭代计数(如有)递减1。DO变量(如果有)通过递增参数m3的值递增。我想强调的是,它是一个迭代计数,控制循环范围的执行次数。有关更多详细信息,请参阅第98-99页 按顺序执行以下步骤:
MAX(INT((m2 –m1+m3)/m3),0)
1.2如果省略循环控制,则不计算迭代计数
1.3 DO语句执行完成后,执行周期开始2.3迭代计数(如有)递减1。DO变量(如果有)将按递增参数m3的值递增。很抱歉,但未找到该问题。我的是复制品。感谢您的提示。另请参见第8.1.6.6.2节和第8.1.6.6.4节。后者表示:“当DO构造变为非活动时,DO构造的DO变量(如果有)将保留其最后定义的值。”,而前者给出了循环迭代的详细信息。抱歉,但没有发现该问题。我的是复制品。感谢您的提示。另请参见第8.1.6.6.2节和第8.1.6.6.4节。后者表示:“当DO构造变为非活动时,DO构造的DO变量(如果有)将保留其最后定义的值。”,而前者给出了循环迭代的详细信息。感谢您的解释。我在使用循环变量时总是遇到问题,因此我以后将其作为循环绑定重用。谢谢您的解释。我在使用循环变量时总是遇到问题,因此我以后将其作为循环绑定重用。