考虑下面的程序
program
print*,.true.,.false.
print*,true,false
end program
该程序在
pgfortan
和 gfortran
中打印不同的值。
pgfortran
输出
T F
0.00000000 0.00000000
gfortran
输出
T F
4.59135442E-41 5.87982594E-39
问题 - 逻辑常数
.true.
和 .false.
正确显示为 T
和 F
。但是这些常量 true
和 false
是什么,其中常量周围没有 .
?
正如 albert 所建议的,TRUE 和 FALSE 在 Fortran 中没有内在含义 - 它们只是必须声明并赋值的普通标识符。有时,应用程序使用带有一堆供应商提供的声明的模块,这些声明可能包括 TRUE 和 FALSE 的声明作为命名常量,尤其是在 Windows 平台上。
在您的示例中,TRUE 和 FALSE 是隐式声明的未初始化变量。由于它们未初始化,因此该值未定义。某些实现可能会给未初始化的变量赋予零值,但大多数实现不会。最好不要将默认值设置为零,这样您就可以更早地意识到编程错误。
当我们讨论逻辑值主题时,我会向您指出我关于该主题的旧帖子。