我认为Fortran中数组的第一个索引是1.但为什么这个代码有效?(代码是Wavewatch的修改部分,http://polar.ncep.noaa.gov/waves/wavewatch/ )
DO KINDEX=0, TOTAL+1
NUM = NUM * SCALE
SIG (KINDEX) = NUM
END DO
Run Code Online (Sandbox Code Playgroud)
正如您已经被告知Fortran数组索引默认情况下是基于1的,但程序员可以选择用于索引值的整数类型范围内的任何整数.但是,你应该注意另一种皱纹.Fortran默认情况下不是在编译时(在许多情况下是不可能的)或在运行时(可能但是很昂贵),检查数组索引表达式是否在边界内.
这个问题在野外有很多Fortran代码,我遇到过一个程序工作的情况,显然是正确的,多年没有被发现.使用编译器的选项创建程序版本,该程序在运行时检查数组边界表达式,运行它并查看会发生什么.
或者,正如您已经被告知的那样,SIG可能已被宣布0为其最低指数.
| 归档时间: |
|
| 查看次数: |
1166 次 |
| 最近记录: |