Fortran未赋值数组



我刚开始学习Fortran,就遇到了这个问题。考虑下面的简单代码:

PROGRAM random
INTEGER, DIMENSION(12):: array
PRINT *, array
END PROGRAM random

array没有赋值,但可以打印,它似乎有一些随机元素和几个零元素。但是,如果我考虑更短的数组,假设我声明

INTEGER, DIMENSION(5):: array

则打印的数组中所有元素都= 0。我想知道这里发生了什么?

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

然而,许多编译器都有选项在编译器级别将未赋值数组初始化为零。总是建议在使用数组之前初始化它!

如果您不初始化变量,您将看到变量占用的内存中发生的任何情况。要将数组初始化为0,使用以下语句:

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

如果你在访问变量之前没有初始化它,你正在使用未定义行为,你的程序是无效的。

相关内容

  • 没有找到相关文章

最新更新