5 fortran
与f90相比,为什么变量在2003年的fortran中没有初始化为零?
我在一个文件的函数中有一个变量.它初始化为0.我想使用它另一个函数,然后它显示一个垃圾值.即使是全局变量也是如此.我需要为fortran 2003编译器设置任何选项吗?
您可以尝试使用-zero或/ Qzero - 这些将本地标量初始化为零 - 但您确实应该明确设置初始值.正如您所知,根据编译器为您执行此操作,是一种引入错误的好方法.请注意,不同编译器的选项名称可能不同.提到的是Intel Visual Fortran.
我不熟悉任何 Fortran 编译器,但我确实知道,一般来说,大多数编译器不会初始化全局和局部变量。初始化应始终在代码中完成。您不应该依赖编译器来为您执行此操作。您看到的垃圾可能来自堆栈或内存堆。有些编译器在分配内存时会用零填充堆,这可以解释为什么有些编译器似乎用 0 初始化变量。它们实际上没有初始化任何东西,它们只是使用了碰巧用零填充的内存区域。 。