夏青虫

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

(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的累加

posted on 2013-01-20 11:38  夏青虫  阅读(1119)  评论(0编辑  收藏  举报