我正在通过 Ubuntu 在 Fortran 中进行编码,并使用 make 文件来运行编译器——当涉及到编译器时,我有点新手,但我认为问题就在于此。我做了一些研究,我的问题与这里提出的问题相同:Index of matrix out of range。但是,在我的情况下,-C(检查边界)标志一直处于打开状态,而我最近才遇到这个问题。我根本没有改变编译器,所以非常困惑。所以例如我写:
REAL, ALLOCATABLE :: mat_b(:,:)
INTEGER :: i
ALLOCATE(mat_b(5,5))
mat_b = 0.0
DO i = -1, 10
WRITE(*,*) mat_b(i,:)
END DO
WRITE(*,*) 100000*mat_b(6,:)
很高兴写第一个:
-0.98799251802048516 0.0000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000
4.43497120311741914E-312 0.0000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000
0.0000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000
0.0000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000
0.0000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000
0.0000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000
0.0000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000
0.0000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000 1.05365618368981430E-312
0.0000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000 -4.64431912125404020E-042
0.0000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000 0.13957067792614544
0.0000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000 3.60739284562909423E-313
0.0000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000 7.03660474880717784E-002
但确实抱怨第二个写语句说它“超出预期范围(1:5)”知道为什么它没有第一次把它刺起来吗?非常感谢。