与f90相比,为什么Fortran2003中的变量不能初始化为零?
我有一个来自文件的函数中的变量。它已初始化为0。我想使用另一个函数,然后它会显示一个无用的值。即使对于全局变量也是如此。是否需要为fortran 2003编译器设置任何选项?
发布于 2009-07-21 12:02:40
您可以尝试使用-zero或/Qzero --它们会将本地标量初始化为零--但是您确实应该显式地设置初始值。正如您已经发现的,依赖于编译器来为您做这件事,这是引入bug的一个好方法。请注意,不同编译器的选项名称可能不同。这里提到的是针对Intel Visual Fortran的。
发布于 2009-11-25 01:48:55
我们经历了从Compaq Visual Fortran迁移到英特尔Visual Fortran的过程。尽管Alex对Fortran编译器不熟悉,但他留下的整个帖子都是正确的--您不应该依赖编译器设置初始值。标准并没有说应该自动设置变量值。即使它这样做了,依赖这种编译器行为也是有风险的。
Compaq Visual Fortran自动初始化变量。其他编译器则不这样做。您的代码需要修复。你只能通过初始化你所有的变量来做到这一点。
约翰
发布于 2009-07-21 11:51:13
我不熟悉任何Fortran编译器,但我确实知道,一般来说,大多数编译器不会初始化全局变量和局部变量。初始化应该始终在代码中完成。你不应该依赖编译器来为你做这件事。您看到的垃圾可能来自堆栈或内存堆。一些编译器在分配内存时会用0填充堆,这就解释了为什么有些编译器似乎会用0来初始化变量。他们实际上没有初始化任何东西,他们只是使用了一个碰巧填满了零的内存区域……
https://stackoverflow.com/questions/1158690
复制相似问题