|
谢谢指点。
总算debug出来了。
原因是因为程序跳入了一个判断,并直接用cycle循环了do,对njb_new这个数组没有赋值,而njb_new将作为一个数组的下标,当它小于等于0的时候,导致程序出错。
而为什么用nx+3定义会出错而146出错不会,根据我的推测,原因根pasuka指点的一样,是因为save的属性。当用146定义的时候,编译器默认会使用save属性,也就是说上一次的值会保存下来直到重新赋值。而用使用变量(这个例子中是nx)赋值的时候,虽说它的值也是146,但是在每次调用子程序的时候,系统都会对其重置,从而导致出错。
得出结论:
也就是说用变量定义数组和用数字定义数组,性质虽说相同,但是计算机处理的方式不同。
初始化这种东西要时刻铭记于心。
allocate后的数组基本都不会为0,而用直接用integer或者real定义的变量都会自动为0?(这是编译器的效果么?或者编译器与编译器之间有区别?我用的vs2008)
|
|