Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 循环后Fortran DO循环索引的值_Loops_Fortran_Do Loops - Fatal编程技术网

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页

按顺序执行以下步骤:

  • 循环启动

    1.1如果回路控制为

    1.1.1通过分别计算标量-数值-expr1、标量-数值-expr2和标量-数值-expr3,建立初始参数m1、终端参数m2、增量参数m3

    1.1.2 do变量由初始参数m1的值定义

    1.1.3建立迭代计数,它是表达式的值

        MAX(INT((m2 –m1+m3)/m3),0)
    
    1.2如果省略循环控制,则不计算迭代计数

    1.3 DO语句执行完成后,执行周期开始

  • 2.执行周期。DO构造的执行周期由以下顺序重复执行的步骤组成,直到 终止:

    2.1测试迭代计数(如有)。如果迭代计数为零,则循环终止

    2.2如果迭代计数为非零,则执行循环范围


    2.3迭代计数
    (如有)递减1。DO变量(如果有)通过递增参数m3的值递增。

    我想强调的是,它是一个迭代计数,控制循环范围的执行次数。有关更多详细信息,请参阅第98-99页

    按顺序执行以下步骤:

  • 循环启动

    1.1如果回路控制为

    1.1.1通过分别计算标量-数值-expr1、标量-数值-expr2和标量-数值-expr3,建立初始参数m1、终端参数m2、增量参数m3

    1.1.2 do变量由初始参数m1的值定义

    1.1.3建立迭代计数,它是表达式的值

        MAX(INT((m2 –m1+m3)/m3),0)
    
    1.2如果省略循环控制,则不计算迭代计数

    1.3 DO语句执行完成后,执行周期开始

  • 2.执行周期。DO构造的执行周期由以下顺序重复执行的步骤组成,直到 终止:

    2.1测试迭代计数(如有)。如果迭代计数为零,则循环终止

    2.2如果迭代计数为非零,则执行循环范围


    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变量(如果有)将保留其最后定义的值。”,而前者给出了循环迭代的详细信息。感谢您的解释。我在使用循环变量时总是遇到问题,因此我以后将其作为循环绑定重用。谢谢您的解释。我在使用循环变量时总是遇到问题,因此我以后将其作为循环绑定重用。