[問題] 變數自行改變

作者: sven1130 (綠色貍貓)   2019-09-09 18:35:03
如題
這個問題困擾我很久了
本魯使用visual studio
目前我這個程式的架構
是由C++去呼叫一個for的dll
然後跑dll裡面眾多的subroutine
重點來了
當我跑了六次這個迴圈的時候
在跑完!******************************************
標示的該行後
有一個於這個迴圈都沒有出現的參數NNE(7)
會自動變為一個很奇怪的數字
原本為14跑完後變為一個極大的數字
但該行甚至這個迴圈 與參數NNE應該是一點關係也沒有
為何會這樣 求解 先謝過大家了
附圖
https://imgur.com/7kf4X9E
按一下F11逐步執行後變成
https://imgur.com/gznxEKU
完全沒有道理啊@@
附上該迴圈
DO I=L,1,-1
OPEN(60,FILE='MANNING.DAT',STATUS='OLD')
OPEN(61,FILE='NCCHECH.OUT',STATUS='UNKNOWN')
READ(60,1002) NC
1002 FORMAT(5X,F8.5)
CMN(I,J)=NC
!******************************************
WRITE(61,*)"CMN(",I,",",J,")",CMN(I,J)
!******************************************
!將CMN寫入NCCHECH.OUT
READ(IIN,1004) NDS(I,J),XL,XR,LL,LR,LC
1004 FORMAT(8X,F8.0,2F8.2,3F8.0)
C DIST1(I,J)=(LL+LC+LR)/3.0
DIST1(I,J)=(LL+LC+LR)/3.0*3
KK=NDS(I,J)
WRITE(5,1006)J,I,NDS(I,J),XL,XR,DIST1(I,J),CMN(I,J)
1006 FORMAT(//5X,I3,2X,I3,4X,F8.0,2X,F8.2,2X,F8.2,2X,F8.2,2X,F8.4)
READ(IIN,1008)(AY(II,I,J),AX(II,I,J),II=1,KK)
1008 FORMAT(2X,F6.2,9F8.2)
WRITE(5,1978)(AY(II,I,J),AX(II,I,J),II=1,KK)
1978 FORMAT(2X,F6.2,9F8.2)
Z(I,J)=100.0
DO 1010 II=1,KK
IF(AX(II,I,J).EQ.XL) N1(I,J)=II
IF(AX(II,I,J).EQ.XR) N2(I,J)=II
IF(Z(I,J).GE.AY(II,I,J)) THEN
Z(I,J)=AY(II,I,J)
Z919(I,J)=AY(II,I,J)
END IF
1010 CONTINUE
WRITE(5,1012) N1(I,J),N2(I,J),Z(I,J)
c WRITE(*,1012) N1(I,J),N2(I,J),Z(I,J)
1012 FORMAT(5X,I8,2X,I8,2X,F8.2)
END DO
作者: minoru04 (華山派巴麻美)   2018-07-14 20:42:00
台南市長不是賴清德嗎? 怎麼是榮中學?
作者: espresso1   2019-09-13 21:12:00
只有NNE(7)改變…@[email protected]
作者: fragmentwing (片翼碎夢)   2019-09-15 00:14:00
還沒看仔細 不過牽涉到讀檔先來猜是因為FORTRAN的換行讀檔問題目前比較在意的是CLOSE的部分 應該都有寫在迴圈內吧超怪 NNE是輸入用的 怎麼會被改變可惡 真的看不出來 只不過既然是第七層我覺得還有一個可能原因有書上說FORTRAN最多只能宣到七維的陣列該不會是因為造成這個限制的原因?另外那本書上的版本是到f90在想會不會牽涉到背後的機制了樓主附的程式碼應該就只有少j那行的do而已應該不會構成我們解讀上的錯誤才對阿阿還有close 可是如果是close出問題不會第七次才出現問題啊樓主 我問一個很過分的問題樓主知道在fortran 不管是function 或是subroutine其變數改變也會改變主程式的變數這件事吧 說到fortran最異於其他程式語言就是這點了我覺得樓主很快就會需要建立fortran對c的對照表XDcontinue goto target 一堆東西都不一樣 尤其指標相關最誇張 而且FORTRAN 可是從1開始的異世界 其他語言陣列宣告從第零項居多當初學fortran時有些概念的問題需要請教 然後教我的人是學C++的 兩邊對話起來都要稍微翻譯一下成對方的語言寫法w

Links booklink

Contact Us: admin [ a t ] ucptt.com