隐式变量类型

当 Fortran 最初开发时,内存非常宝贵。变量和过程名称最多可包含 6 个字符,变量通常是隐式输入的。这意味着变量名的第一个字母决定了它的类型。

  • 以 i,j,…,n 开头的变量是 integer
  • 其他一切(a,b,…,h 和 o,p,…,z)都是 real

以下程序是可接受的 Fortran:

program badbadnotgood
  j = 4
  key = 5 ! only the first letter determines the type
  x = 3.142
  print*, "j = ", j, "key = ", key, "x = ", x
end program badbadnotgood

你甚至可以使用 implicit 语句定义自己的隐式规则:

! all variables are real by default 
implicit real (a-z)

要么

! variables starting with x, y, z are complex
! variables starting with c, s are character with length of 4 bytes
! and all other letters have their default implicit type
implicit complex (x,y,z), character*4 (c,s) 

**隐式打字不再被视为最佳实践。**使用隐式类型很容易出错,因为错别字可能会被忽视,例如

program oops
  real::somelongandcomplicatedname

  ...

  call expensive_subroutine(somelongandcomplEcatedname)
end program oops

这个程序很乐意运行并做错事。

要关闭隐式类型,可以使用 implicit none 语句。

program much_better
  implicit none
  integer::j = 4
  real::x = 3.142
  print*, "j = ", j, "x = ", x
end program much_better

如果我们在上面的程序 oops 中使用了 implicit none,编译器会立即注意到,并产生错误。