主题:fortran 矩阵益处却不报错,正常吗?
xiaoyuan24
[专家分:100] 发布于 2012-06-23 04:26:00
PROGRAM MAIN
implicit none
integer maxnw,maxss,maxetd
PARAMETER (MAXNW=160,MAXSS=13000,maxetd=30)
integer IEQPT(30,2) !定义个2维矩阵
IEQPT(342,2)=189
WRITE(*,*) IEQPT(342,2) !超出矩阵维数,但不报错,结果屏幕显示189
END
真是奇怪,这种情况正常么?
回复列表 (共6个回复)
沙发
臭石头雪球 [专家分:23030] 发布于 2012-06-23 08:42:00
你可以换一个编译器了。
删掉垃圾编译器吧
[img]http://img011.photo.21cn.com/photos/mark/20120623/o/73B7004A14FF482DC73BF898BEE694A3.jpg[/img]
板凳
alsoran [专家分:760] 发布于 2012-06-23 10:16:00
编译选项里要开数组越界检查
3 楼
xiaoyuan24 [专家分:100] 发布于 2012-06-26 00:34:00
请问如何开启数组越界检查?谢谢!!
4 楼
xiaoyuan24 [专家分:100] 发布于 2012-06-26 00:35:00
谢谢,换了个编译器就可以。但是还是觉得这种错误编译器居然没有提示,很无语。还是因为编译器设置没设好?有这个功能我没开?
5 楼
臭石头雪球 [专家分:23030] 发布于 2012-06-26 00:38:00
这要看你用什么编译器了。
如果是 VF 系列的话,
在命令行下用
/check:bounds
在 IDE 里,通常在工程设置,Fortran,Run-time 里有一个 Check Array and String bounds 选项,勾选它,或者切换为 Yes
6 楼
臭石头雪球 [专家分:23030] 发布于 2012-06-26 00:39:00
[quote]
谢谢,换了个编译器就可以。但是还是觉得这种错误编译器居然没有提示,很无语。还是因为编译器设置没设好?有这个功能我没开?[/quote]
不同编译器,这些设置的默认项可能不同。
不妨说说你以前用的什么编译器,刚刚换了什么编译器?
我来回复