Fortran 中的 TRUE 和 FALSE 常量(没有周围的句点 ('.'))是什么?
What are TRUE and FALSE constants (without the surrounding periods ('.')) in Fortran?
考虑下面的程序
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 是隐式声明的未初始化变量。由于它们未初始化,因此该值未定义。一些实现可能会给未初始化的变量一个零值,但大多数不会。最好不要将默认值设置为零,这样您可以更早地意识到编程错误。
当我们讨论逻辑值时,我会向您指出 an old post of mine on the subject。
考虑下面的程序
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 是隐式声明的未初始化变量。由于它们未初始化,因此该值未定义。一些实现可能会给未初始化的变量一个零值,但大多数不会。最好不要将默认值设置为零,这样您可以更早地意识到编程错误。
当我们讨论逻辑值时,我会向您指出 an old post of mine on the subject。