Fortran - 資料型別



Fortran 提供五種內建資料型別,但是您也可以派生自己的資料型別。這五種內建型別是:

  • 整數型別
  • 實數型別
  • 複數型別
  • 邏輯型別
  • 字元型別

整數型別

整數型別只能儲存整數值。下面的例子提取了通常的四位元組整數中可以儲存的最大值:

program testingInt
implicit none

   integer :: largeval
   print *, huge(largeval)
   
end program testingInt

編譯並執行上述程式後,將產生以下結果:

2147483647

請注意,**huge()** 函式給出特定整數資料型別可以儲存的最大數字。您也可以使用 **kind** 說明符指定位元組數。下面的例子演示了這一點:

program testingInt
implicit none

   !two byte integer
   integer(kind = 2) :: shortval
   
   !four byte integer
   integer(kind = 4) :: longval
   
   !eight byte integer
   integer(kind = 8) :: verylongval
   
   !sixteen byte integer
   integer(kind = 16) :: veryverylongval
   
   !default integer 
   integer :: defval
        
   print *, huge(shortval)
   print *, huge(longval)
   print *, huge(verylongval)
   print *, huge(veryverylongval)
   print *, huge(defval)
   
end program testingInt

編譯並執行上述程式後,將產生以下結果:

32767
2147483647
9223372036854775807
170141183460469231731687303715884105727
2147483647

實數型別

它儲存浮點數,例如 2.0、3.1415、-100.876 等。

傳統上,有兩種不同的實數型別,預設的 **real** 型別和 **double precision** 型別。

然而,Fortran 90/95 透過 **kind** 說明符提供了對實數和整數資料型別精度的更多控制,我們將在“數字”一章中學習。

下面的例子展示了實數型別的用法:

program division   
implicit none  

   ! Define real variables   
   real :: p, q, realRes 
   
   ! Define integer variables  
   integer :: i, j, intRes  
   
   ! Assigning  values   
   p = 2.0 
   q = 3.0    
   i = 2 
   j = 3  
   
   ! floating point division
   realRes = p/q  
   intRes = i/j
   
   print *, realRes
   print *, intRes
   
end program division  

編譯並執行上述程式後,將產生以下結果:

0.666666687    
0

複數型別

這用於儲存複數。複數有兩個部分,實部和虛部。兩個連續的數值儲存單元儲存這兩個部分。

例如,複數 (3.0, -5.0) 等於 3.0 – 5.0i

我們將在“數字”一章中更詳細地討論複數型別。

邏輯型別

只有兩個邏輯值:**.true.** 和 **.false.**

字元型別

字元型別儲存字元和字串。字串的長度可以透過 len 說明符指定。如果未指定長度,則為 1。

例如:

character (len = 40) :: name  
name = “Zara Ali”

表示式 **name(1:4)** 將給出子字串“Zara”。

隱式型別宣告

較舊版本的 Fortran 允許一種稱為隱式型別宣告的功能,即您不必在使用變數之前宣告它們。如果未宣告變數,則其名稱的第一個字母將決定其型別。

以 i、j、k、l、m 或 n 開頭的變數名被認為是整數變數,其他變數是實數變數。但是,您必須宣告所有變數,因為這是良好的程式設計習慣。為此,您需要在程式開頭使用以下語句:

implicit none

此語句關閉隱式型別宣告。

廣告