选择类型
能否区分Integer(Int8)
、Integer(Int16)
、Integer(Int32)
和整数(Int64)
?
此外,Select Type
是否可以识别整数类型,而不管它使用多少位数?
最佳答案
是的,您可以编写如下内容。在这里,我使用内部模块 iso_fortran_env
中的真实类型常量。
SELECT TYPE(areal)
TYPE is (REAL(real32))
WRITE(*,*) '... real32'
TYPE is (REAL(real64))
WRITE(*,*) '... real64'
CLASS default
WRITE(*,*) '... default'
END SELECT
但请注意,你不能写
SELECT TYPE(areal)
TYPE is (REAL(real32))
WRITE(*,*) '... real32'
TYPE is (REAL(real64))
WRITE(*,*) '... real64'
TYPE is (REAL)
WRITE(*,*) '... real'
CLASS default
WRITE(*,*) '... default'
END SELECT
在这种情况下,默认类型的实数(对于大多数当前编译器来说可能是 real32
)将匹配两个类型保护语句,这是编译器应该拾取的错误。
关于select - 是否可以使用 Fortran 的 Select Type 来识别和区分类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27471944/