[問題] 副程式將值傳出取代的問題
大家好,有個問題想請教各位先進
目前再寫程式的時候遇到了一個問題
在主程式的時候 我有各做一個X Y的迴圈如下
DO III=1,L1/DX+1
X=(III-1)*DX/L1
DO JJJ=1,B1/DY+1
Y=(JJJ-1)*DY/B2
接著會去call一個副程式
CALL STEADY_SOL(W1_S,W2_S,LAMDA,ALPHA,OMEGA1,OMEGA2)
主程式的X,Y迴圈主要是在副程式執行過後才會接著使用副程式傳出的值繼續運算
副程式本身並不會使用到X,Y的變數與值
但是當副程式運算完之後,會自己傳出X,Y的值,將我本來的X,Y值取代成
本來的X,Y 取代過後的值
X=0.0000 → 2.206875623112771E-312
Y=0.0000 → 2.164435707283584E-312
使用副程式時沒有傳入&傳出X,Y,但是他卻自行傳出X,Y的值將我原本的X,Y值給取代掉了
請問有人知道這是甚麼樣的問題嘛?
感謝各位~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.223.119
→
07/05 21:49, , 1F
07/05 21:49, 1F
→
07/05 21:49, , 2F
07/05 21:49, 2F
推
07/05 21:52, , 3F
07/05 21:52, 3F
你好,我在主程式跟副程式都沒有宣告X、Y,X、Y主要是作迴圈運算用
以及在最後write出來而已
我並不是要在副程式前後作比較,主要是我要用X、Y的迴圈算不同的解
其中那個副程式是用來算解的係數的,副程式內不會用到X、Y的值,所以我沒傳入
到副程式內,在同一個迴圈內,進到副程式運算前X、Y都是0.0000,但是副程式運算過後
自動把我的X、Y給取代掉了
※ 編輯: r1000000 來自: 118.169.33.131 (07/06 00:10)
推
07/06 12:53, , 4F
07/06 12:53, 4F
→
07/06 12:54, , 5F
07/06 12:54, 5F
你好,我在主程式沒有用implicit none來限定
但是我在副程式內有用implicit none來限定變數宣告才能使用,且我並無宣告X、Y
所以照理說應該是不會用到X、Y才對
如果是溢位的問題的話,需如何改進呢,感謝(winXP+CVF6.6)
※ 編輯: r1000000 來自: 140.113.223.119 (07/06 14:11)
→
07/06 15:37, , 6F
07/06 15:37, 6F
→
07/06 15:38, , 7F
07/06 15:38, 7F
→
07/06 15:39, , 8F
07/06 15:39, 8F
你好,不好意思,不太了解程式存取記憶體到超出該存的範圍的意思
意思是說我宣告給陣列的空間不夠大,所以陣列的值超出記憶體存取範圍嗎?
※ 編輯: r1000000 來自: 111.251.203.3 (07/06 21:29)
→
07/07 01:12, , 9F
07/07 01:12, 9F
→
07/07 01:12, , 10F
07/07 01:12, 10F
→
07/07 23:49, , 11F
07/07 23:49, 11F
→
07/07 23:50, , 12F
07/07 23:50, 12F
→
07/07 23:50, , 13F
07/07 23:50, 13F
→
07/07 23:51, , 14F
07/07 23:51, 14F
→
07/09 10:26, , 15F
07/09 10:26, 15F
Fortran 近期熱門文章
PTT數位生活區 即時熱門文章