【发布时间】:2015-06-08 11:13:08
【问题描述】:
我在我的 Ubuntu 15.04 系统上安装了 gfortran。在编译 Fortran 代码时,DO 循环要求仅采用整数参数,而不是实数值或变量。这包括循环变量和步骤表达式。为什么它也不能取真实值?
下面的程序取自here,嵌套do循环小节的练习3.5。
program xytab
implicit none
!constructs a table of z=x/y for values of x from 1 to 2 and
!y from 1 to 4 in steps of .5
real :: x, y, z
print *, ' x y z'
do x = 1,2
do y = 1,4,0.5
z = x/y
print *, x,y,z
end do
end do
end program xytab
编译后显示的错误是:
xytab.f95:8.4:
do y = 1,4,0.5
1
Warning: Deleted feature: Loop variable at (1) must be integer
xytab.f95:8.12:
do y = 1,4,0.5
1
Warning: Deleted feature: Step expression in DO loop at (1) must be integer
xytab.f95:7.3:
do x = 1,2
1
Warning: Deleted feature: Loop variable at (1) must be integer
【问题讨论】:
-
我已经回答说,符合 Fortran 的程序必须使用整数变量/表达式,但请注意,您的编译器很乐意使用实数。这些只是警告。我强烈建议您注意,但它仍然是您的非便携式选择。
-
哦,对了!这是一个警告。很好地指出。伟大的。谢谢。但是为什么说它不便携呢?
-
它是不可移植的,因为 Fortran 95+ 编译器不需要接受该程序,因为它不遵循标准指定的规则。许多当前具有 Fortran 77/90 传统的编译器可能都有代码可以接受它,但我不会努力将其放入全新的编译器中。
-
不是我推荐的,但您可以转换为
do while循环(假设您想尝试模仿一些旧代码的行为) -
有趣的是,教程声称代码是 F95+ .. 有人应该让他们知道。 (他们希望你“注册”只是为了给他们发个便条)
标签: fortran fortran90 gfortran fortran95