2017-04-22 105 views
1

我需要幫助理解爲什麼我不能編譯這段代碼填充變量

program test 
integer,dimension(1:10) :: isquares 
isquares(:) = (j**2,j=1,10) 
print*,isquares 
end 

維隱式循環然而,這個版本是確定的:

program test 
print*,(j**2,j=1,10) 
end 

回答

1

(j**2,j=1,10)是一個隱含的循環。對於任務,您需要先將其轉換爲數組:

isquares(:) = [(j**2,j=1,10)] 
+0

正確,但此功能僅在Fortran 2003版本中可用。 jsquares(:) = [(j ** 2,J = 1,10)] 錯誤:Fortran 2003的:[...]在(1) –

+2

然後使用'(/(j風格數組構造** 2 ,j = 1,10)/)' –