关于fortran的问题在for循环中继续声明

时间:2010-02-01 10:46:49

标签: fortran

我正在分析fortran中的代码并提出一个简单的问题。

我想知道下面代码中100和200处的“continue”语句是什么。

它会增加i和j计数器吗?如果是,那么if( .not. flg )那么条件是否包含flg值,它是循环j = i+1 to N中flg的“最后一个值”?

    do 100 i = 1, N-1
            flg = .false.
            do 200 j = i+1, N
                if( "my condition" ) flg = .true.
200         continue

            if( .not. flg ) then
                ! do something here. 
            endif
100 continue

4 个答案:

答案 0 :(得分:4)

AFAIK,在fortran的CONTINUE什么也没做。

它仅用于DO循环语义的便利性。 这不像C。

答案 1 :(得分:4)

Th CONTINUE语句只是标记由其数字语句编号指示的循环结束 - 它不会增加任何内容。它肯定对你的代码中的flg没有影响。对其使用here有一个简单的解释。

答案 2 :(得分:2)

这是旧的Fortran,它使用通常使用的带标记的continue语句来标记do循环。 Fortran 90及更高版本提供了“end do”语句。

答案 3 :(得分:0)

自从2010年2月问到这个问题以来,我回答了三年多,因为我现在只看到了这个问题,并且发现答案会更加详细和完整。实际上,逻辑变量flg在循环j = i + 1到N中具有flg的“最后一个值”,因为标签200指定的内部do循环应对于i的每个值从j = i + 1到N(= 1) ,N-1,1)。条件“我的条件”必须发挥重要作用,否则不会使这个内循环变得微不足道。