隐式变量类型
当 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
,编译器会立即注意到,并产生错误。