是
real(ra) :: X
就像
real(kind=8)
事實上,它是,如果RA = 8同樣的事情! kind =在這裏是可選的。
至於找到它將是一個參數。它可能與上面的聲明在同一個例程中,它可能在例程使用的模塊中,或者我認爲它可能在例程中包含的文件中。可能有不同的選擇,但它會以某種方式在範圍內。
那麼爲什麼不使用第二種形式呢?這是因爲類型號碼不是可移植的,並且因編譯器和編譯器而異 - 例如,
[[email protected] stackoverflow]$ cat kind.f90
Program real_kinds
Implicit None
Real(8) :: a
End Program real_kinds
[[email protected] stackoverflow]$ gfortran kind.f90
[[email protected] stackoverflow]$ nagfor kind.f90
NAG Fortran Compiler Release 5.3.1 pre-release(904)
Warning: kind.f90, line 7: Unused local variable A
Error: kind.f90, line 5: KIND value (8) does not specify a valid representation method
Errors in declarations, no further processing for REAL_KINDS
[NAG Fortran Compiler error termination, 1 error, 1 warning]
因此,最好使用與selected_real_kind固有的初始化參數指定類型:
[[email protected] stackoverflow]$ cat kind.f90
Program real_kinds
Implicit None
Integer, Parameter :: wp = Selected_real_kind(12, 70)
Real(wp) :: a
Write(*, *) Kind(a)
End Program real_kinds
[[email protected] stackoverflow]$ gfortran kind.f90
[[email protected] stackoverflow]$ ./a.out
8
[[email protected] stackoverflow]$ nagfor kind.f90
NAG Fortran Compiler Release 5.3.1 pre-release(904)
[NAG Fortran Compiler normal termination]
[[email protected] stackoverflow]$ ./a.out
2
可能會做你想要什麼。到selected_real_kind常見的替代方案是
Integer, Parameter :: wp = Kind(1.0d0)
因此,在總結它是一樣的,如果用心做它更便於攜帶的,只是更好。
(最後我真的應該說是一種價值需要沒有任何關係的字節數用於存儲變量)
你可以採取另一種道路是'使用iso_fortran_env'。使用F2008標準,這使得(除其他外)分別提供參數「real32」,「real64」和「real128」,分別對應於編譯器的4,8和16字節實型的類型參數,或負數如果不支持。還有一個'real_kinds'數組包含支持的種類。 – sigma