(1)对于字符串变量,每次调用时都要重新初始化,否则保留上一次的结果。
subroutine sub1 character(len=80) :: str1 str1 = 'abc' ! necessary .... if (condition) str1 = 'cba' ... if(str1(1:3)=='cba') ... ... end program main ... do i=1, n ... call sub1 ... end do end
如果没有那步初始化,而且str1赋值了'cba‘,下一次调用不管condition是否成立,第二个if都肯定成立。
----------------------------------------------------------------------------------------------------------------------------------------
(2)intent(out)该声明并不能阻止数据的传递
subroutine sub1(f) real, intent(out) :: f ... f = 0. !necessary ... f = f + 1 end program main ... do i = 1, n call sub1(f) end do end
如果f没有初始化,就变成了f的累加