Fortran中有什么是TRUE和FALSE常量(没有周期('.'))?

Oak*_*tes 0 fortran gfortran

考虑下面的程序

program
  print*,.true.,.false.
  print*,true,false
end program
Run Code Online (Sandbox Code Playgroud)

该程序在pgfortan和中打印不同的值gfortran.

pgfortran 产量

T F
0.00000000       0.00000000
Run Code Online (Sandbox Code Playgroud)

gfortran 产量

T F
4.59135442E-41   5.87982594E-39
Run Code Online (Sandbox Code Playgroud)

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

Ste*_*nel 5

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

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

当我们讨论LOGICAL值的主题时,我会指出你在这个主题上的一个老帖子.