我不明白pgf90 7.2中present()内在函数的行为。我写了一个20行的样例程序来测试,但结果对我来说仍然毫无意义。观察:
subroutine testopt(one,two,three,four,five)
implicit none
integer, intent(in) :: one,two
integer, intent(out) :: three
integer, intent(in), optional :: four
integer, intent(out), optional :: five
three = one + two
print *,"present check: ",present(four),present(five)
if (present(four) .and. present(five)) then
five = four*four
end if
end subroutine testopt
如果我从主程序中调用testopt(1,2,(任意变量)),它会打印出"present check: T F"。但是,如果我从子程序中调用testopt(1,2,(任意变量)),它会打印出"present check: T T"。无论哪种情况,我都只使用了带有3个非可选参数的子例程,并没有使用可选参数。我无法理解为什么会出现这种情况,这导致我正在开发的一个程序出现了严重的错误。感谢您的任何见解。谢谢。