Fortran 2003中未初始化的变量

5 fortran

与f90相比,为什么变量在2003年的fortran中没有初始化为零?

我在一个文件的函数中有一个变量.它初始化为0.我想使用它另一个函数,然后它显示一个垃圾值.即使是全局变量也是如此.我需要为fortran 2003编译器设置任何选项吗?

tva*_*son 7

您可以尝试使用-zero或/ Qzero - 这些将本地标量初始化为零 - 但您确实应该明确设置初始值.正如您所知,根据编译器为您执行此操作,是一种引入错误的好方法.请注意,不同编译器的选项名称可能不同.提到的是Intel Visual Fortran.


Wim*_*ink 3

我不熟悉任何 Fortran 编译器,但我确实知道,一般来说,大多数编译器不会初始化全局和局部变量。初始化应始终在代码中完成。您不应该依赖编译器来为您执行此操作。您看到的垃圾可能来自堆栈或内存堆。有些编译器在分配内存时会用零填充堆,这可以解释为什么有些编译器似乎用 0 初始化变量。它们实际上没有初始化任何东西,它们只是使用了碰巧用零填充的内存区域。 。

  • 我知道编译器是如何工作的,是的。一般来说,我们对编译器有丰富的经验,因此 Fortran 也没有太大不同。由于问题没有提到使用哪个 Fortran 编译器,所以它毕竟有点通用。 (4认同)
  • 哇——不熟悉任何 Fortran 编译器,但仍然愿意提供意见。只是哇。 (3认同)