[問題] 變數自行改變

看板Fortran作者 (綠色貍貓)時間5年前 (2019/09/09 18:35), 5年前編輯推噓6(6020)
留言26則, 2人參與, 5年前最新討論串1/2 (看更多)
如題 這個問題困擾我很久了 本魯使用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 -- 作者 pataricky (專發廢文) 看板 Gossiping 標題 [問卦] 有沒有台南市長榮中學的八卦 時間 Sat Jul 14 20:40:31 2012

07/14 20:42,
台南市長不是賴清德嗎? 怎麼是榮中學?
07/14 20:42
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.63.241 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Fortran/M.1568025306.A.4F5.html ※ 編輯: sven1130 (140.112.63.241 臺灣), 09/09/2019 18:38:03 ※ 編輯: sven1130 (140.112.63.241 臺灣), 09/09/2019 18:42:34 ※ 編輯: sven1130 (140.112.63.241 臺灣), 09/09/2019 18:46:37

09/13 21:12, 5年前 , 1F
只有NNE(7)改變…@_@a
09/13 21:12, 1F
其實繼續跑之後 NNE的6跟5也會改變 但是4321倒是沒有變 順帶一提 我後來試過先把變數用另一個參數 NNNE存起來 等這次錯誤後再重新寫回去NNE 過了兩三行 又會自己改變@@

09/15 00:14, 5年前 , 2F
還沒看仔細 不過牽涉到讀檔
09/15 00:14, 2F

09/15 00:15, 5年前 , 3F
先來猜是因為FORTRAN的換行讀檔問題
09/15 00:15, 3F

09/15 00:20, 5年前 , 4F
目前比較在意的是CLOSE的部分 應該都有寫在迴圈內吧
09/15 00:20, 4F

09/15 00:32, 5年前 , 5F
超怪 NNE是輸入用的 怎麼會被改變
09/15 00:32, 5F

09/15 00:42, 5年前 , 6F
可惡 真的看不出來 只不過既然是第七層
09/15 00:42, 6F

09/15 00:42, 5年前 , 7F
我覺得還有一個可能原因
09/15 00:42, 7F

09/15 00:43, 5年前 , 8F
有書上說FORTRAN最多只能宣到七維的陣列
09/15 00:43, 8F

09/15 00:43, 5年前 , 9F
該不會是因為造成這個限制的原因?
09/15 00:43, 9F
這個部分我去研究看看好了 感謝指出一盞明燈

09/15 00:44, 5年前 , 10F
另外那本書上的版本是到f90
09/15 00:44, 10F

09/15 01:06, 5年前 , 11F
在想會不會牽涉到背後的機制了
09/15 01:06, 11F

09/15 01:06, 5年前 , 12F
樓主附的程式碼應該就只有少j那行的do而已
09/15 01:06, 12F
是的 我的確少附上 另外 由於是修改他人的程式碼 我想要讓一些變數能夠由外部檔案讀取 而不是寫在parameter裡 因此原本檔案跑起來沒問題 但在改的過程 就是卡死在這 搞到後面都無法debug@@

09/15 01:07, 5年前 , 13F
應該不會構成我們解讀上的錯誤才對
09/15 01:07, 13F

09/15 01:08, 5年前 , 14F
阿阿還有close 可是如果是close出問題
09/15 01:08, 14F

09/15 01:08, 5年前 , 15F
不會第七次才出現問題啊
09/15 01:08, 15F
先感謝各位版友的回覆 我近期也還沒找出解答嗚嗚 我也覺得這個問題很怪 ※ 編輯: sven1130 (27.52.224.14 臺灣), 09/15/2019 03:40:10

09/15 07:24, 5年前 , 16F
樓主 我問一個很過分的問題
09/15 07:24, 16F

09/15 07:24, 5年前 , 17F
樓主知道在fortran 不管是function 或是subroutine
09/15 07:24, 17F

09/15 07:24, 5年前 , 18F
其變數改變也會改變主程式的變數這件事吧 說到fort
09/15 07:24, 18F

09/15 07:24, 5年前 , 19F
ran最異於其他程式語言就是這點了
09/15 07:24, 19F
阿不對 您說的這部分我知道 就是變數經過計算後 傳回去是計算後的值 說來慚愧 我以為這是正常的 在其他語言 我好像還沒用到副程式過xddd 所以就認為fortran跟大家一樣 ※ 編輯: sven1130 (27.52.224.14 臺灣), 09/15/2019 13:35:49 ※ 編輯: sven1130 (27.52.224.14 臺灣), 09/15/2019 13:45:07

09/15 14:20, 5年前 , 20F
我覺得樓主很快就會需要建立fortran對c的對照表XD
09/15 14:20, 20F

09/15 14:20, 5年前 , 21F
continue goto target 一堆東西都不一樣 尤其指標相
09/15 14:20, 21F

09/15 14:20, 5年前 , 22F
關最誇張 而且FORTRAN 可是從1開始的異世界 其他語
09/15 14:20, 22F

09/15 14:20, 5年前 , 23F
言陣列宣告從第零項居多
09/15 14:20, 23F

09/15 14:22, 5年前 , 24F
當初學fortran時有些概念的問題需要請教 然後教我的
09/15 14:22, 24F

09/15 14:22, 5年前 , 25F
人是學C++的 兩邊對話起來都要稍微翻譯一下成對方的
09/15 14:22, 25F

09/15 14:22, 5年前 , 26F
語言寫法w
09/15 14:22, 26F
豪 謝謝f大給我這麼多建議~ ※ 編輯: sven1130 (27.52.224.14 臺灣), 09/15/2019 14:37:02
文章代碼(AID): #1TTYhQJr (Fortran)
討論串 (同標題文章)
文章代碼(AID): #1TTYhQJr (Fortran)