可以Select Type
区分Integer(Int8)
,Integer(Int16)
,Integer(Int32)
和Integer(Int64)
吗?
此外,Select Type
可以识别整数类型,而不管它使用的位数是多少?
答案 0 :(得分:1)
不同的整数种类构成不同的内在类型。所以是的,select type
区分不同类型的整数。
我不知道有任何可能忽视这种类型(即理论上不仅仅是字节数)。您必须为每种类型使用不同的type is
部分。
答案 1 :(得分:1)
是的,你可以写下面的内容。在这里,我使用内在模块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
)将匹配两个类型保护语句,并且这是编译器应该选择的错误。