我认为 Fortran 中数组的第一个索引是 1。但是为什么这段代码可以工作呢? (代码是 Wavewatch 的修改部分,http://polar.ncep.noaa.gov/waves/wavewatch/ http://polar.ncep.noaa.gov/waves/wavewatch/)
DO KINDEX=0, TOTAL+1
NUM = NUM * SCALE
SIG (KINDEX) = NUM
END DO
正如您所知,Fortran 数组索引默认是基于 1 的,但程序员可以选择用于索引值的整数类型范围内的任何整数。不过,您还应该注意另一个问题。默认情况下,Fortran 不会在编译时(在许多情况下这是不可能的)或在运行时(可能但昂贵)检查数组索引表达式是否在边界内。
有很多 Fortran 代码都存在这个问题,我遇到过一些情况,其中一个程序已经工作了很多年,而且显然是正确的,但没有发现这个问题。使用编译器的选项创建一个在运行时检查数组边界表达式的程序版本,运行它并查看会发生什么。
或者,正如你已经被告知的那样,SIG
可能已声明为0
作为其最低指数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)