首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fortran 2003中未初始化的变量

Fortran 2003中未初始化的变量
EN

Stack Overflow用户
提问于 2009-07-21 11:40:19
回答 4查看 3K关注 0票数 5

与f90相比,为什么Fortran2003中的变量不能初始化为零?

我有一个来自文件的函数中的变量。它已初始化为0。我想使用另一个函数,然后它会显示一个无用的值。即使对于全局变量也是如此。是否需要为fortran 2003编译器设置任何选项?

EN

回答 4

Stack Overflow用户

发布于 2009-07-21 12:02:40

您可以尝试使用-zero或/Qzero --它们会将本地标量初始化为零--但是您确实应该显式地设置初始值。正如您已经发现的,依赖于编译器来为您做这件事,这是引入bug的一个好方法。请注意,不同编译器的选项名称可能不同。这里提到的是针对Intel Visual Fortran的。

票数 7
EN

Stack Overflow用户

发布于 2009-11-25 01:48:55

我们经历了从Compaq Visual Fortran迁移到英特尔Visual Fortran的过程。尽管Alex对Fortran编译器不熟悉,但他留下的整个帖子都是正确的--您不应该依赖编译器设置初始值。标准并没有说应该自动设置变量值。即使它这样做了,依赖这种编译器行为也是有风险的。

Compaq Visual Fortran自动初始化变量。其他编译器则不这样做。您的代码需要修复。你只能通过初始化你所有的变量来做到这一点。

约翰

票数 4
EN

Stack Overflow用户

发布于 2009-07-21 11:51:13

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1158690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档