[问题] 变量自行改变

楼主: sven1130 (绿色貍猫)   2019-09-09 18:35:03
如题
这个问题困扰我很久了
本鲁使用visual studio
目前我这个程式的架构
是由C++去呼叫一个for的dll
然后跑dll里面众多的subroutine
重点来了
当我跑了六次这个循环的时候
在跑完!******************************************
标示的该行后
有一个于这个循环都没有出现的参数NNE(7)
会自动变为一个很奇怪的数字
原本为14跑完后变为一个极大的数字
但该行甚至这个循环 与参数NNE应该是一点关系也没有
为何会这样 求解 先谢过大家了
附图

按一下F11逐步执行后变成

完全没有道理啊@@
附上该循环
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