Fortran未分配的数组

时间:2014-07-25 03:52:54

标签: variables fortran unassigned-variable

我刚刚开始学习Fortran,我遇到了这个问题。请考虑以下简单代码。

PROGRAM random

INTEGER, DIMENSION(12):: array
PRINT *, array

END PROGRAM random

array未分配值,但可以打印,并且它似乎有一些随机元素和几个零元素。但是,如果我考虑更短的数组,请说我声明

INTEGER, DIMENSION(5):: array

然后打印的数组的所有元素都为0.我想知道这里发生了什么?

2 个答案:

答案 0 :(得分:4)

在定义数组并尝试在初始化之前查看它包含的值(即通过打印)时,行为是未定义的。这取决于编译器到编译器。虽然一个编译器可以自动将所有值设置为零(我们许多人认为这是默认值),但另一个编译器可能将其设置为完全随机的值。这就是为什么你看到数组值有时为零,有时不是。

但是,许多编译器都可以选择在编译器级别将未分配的数组初始化为零。总是建议在使用之前始终初始化一个数组!

答案 1 :(得分:2)

如果你没有初始化变量,你会看到变量占用的内存中发生的任何事情。要将数组初始化为0,请使用以下语句:

integer, dimension(12) :: array
array = 0

如果在访问变量之前没有初始化变量,那么您使用的是未定义的行为,并且您的程序无效。