Fortran 中的 TRUE 和 FALSE 常量(没有周围的句点 ('.'))是什么?

What are TRUE and FALSE constants (without the surrounding periods ('.')) in Fortran?

考虑下面的程序

program
  print*,.true.,.false.
  print*,true,false
end program

此程序在 pgfortangfortran 中打印不同的值。

pgfortran输出

T F
0.00000000       0.00000000

gfortran输出

T F
4.59135442E-41   5.87982594E-39

问题 - 逻辑常量 .true..false. 正确显示为 TF。但是这些常量 truefalse 是什么,而常量周围没有 .

正如 albert 所建议的那样,TRUE 和 FALSE 在 Fortran 中没有内在含义 - 它们只是必须声明和赋值的普通标识符。有时应用程序使用带有一堆供应商提供的声明的模块,这些声明可能包括 TRUE 和 FALSE 作为命名常量的声明,尤其是在 Windows 平台上。

在您的示例中,TRUE 和 FALSE 是隐式声明的未初始化变量。由于它们未初始化,因此该值未定义。一些实现可能会给未初始化的变量一个零值,但大多数不会。最好不要将默认值设置为零,这样您可以更早地意识到编程错误。

当我们讨论逻辑值时,我会向您指出 an old post of mine on the subject