2009-06-28 112 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