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

此语句关闭隐式类型声明。

广告