2009-06-28 105 views
2

我想下面的Y类型是REAL。在Fortran中输入声明

 SUBROUTINE F(X, Y) 
C  IMPLICIT NONE 
     REAL :: X, Y 
C  REAL :: A, B 
C  REAL, PARAMETER :: C = 3.14E0 
C  X = Y + 2 * SIN(Y) 
     END 

但这是什么类型?

 SUBROUTINE F(X, Y) 
C  IMPLICIT NONE 
     REAL X, Y 
C  REAL :: A, B 
C  REAL, PARAMETER :: C = 3.14E0 
C  X = Y + 2 * SIN(Y) 
     END 

由于该行开头的REAL标记,它是隐式类型还是REAL?我的意思是类型声明的范围是什么,直到行尾,或者一直到行尾为止。

::服务的目的是什么?

(对不起,在半夜迷糊状态的解析器的工作让你害怕作出错误的假设和当下的智慧说去请教别人更多的经验。)

回答

1

范围,该行的末尾: Y是REAL

至于“::”,这是FORTRAN 90中的新内容。

+0

有没有办法使用gfortran的ifort,以便它们拒绝任何不在特定版本的Fortran标准中的东西?当我说gfortran -x f77 -c some.f时,它仍然在做它的业务。 – 2009-06-28 03:58:05

1

您已声明IMPLICIT NONE,所以没有隐式键入正在进行。你是正确的,Y将是REAL - 你可以在一行上声明多个变量。

在Fortran 90声明中使用::字符来指定实际变量名称的类型和选项。正如你发现的那样,编译器通常很开心,但是我发现它使得包含它的可读性更强。作为一个方面说明,它看起来像这样的代码是用FORTRAN 77风格编写的 - 如果它是新代码,您可能需要使用Fortran 90-样式语法编写代码,用于从评论到缩进的所有内容(例如,您没有在某些列中启动您的命令,有更多的固有功能可用,动态内存等)。

+0

尽管在他给出的两个例子中,IMPLICIT NONE都被注释掉了。 – 2009-07-27 12:56:02