我正在分析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
答案 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)。条件“我的条件”必须发挥重要作用,否则不会使这个内循环变得微不足道。