gpt4 book ai didi

compilation - 此 FORTRAN 代码不应编译。这是有原因的吗?

转载 作者:行者123 更新时间:2023-12-01 23:49:32 24 4
gpt4 key购买 nike

以下代码可以编译,但我认为它不应该编译。如您所见,输出是垃圾。

这是一个最小的失败示例,它在我从事的大型项目中让我很痛苦。

我的问题是——为什么编译器不报错?这是编译器限制,还是某种程度上的“预期行为”,而我错过了什么?

我正在使用 gfortran 4.6.3。

module dataModule
integer :: datum1 = int(1)
integer :: datum2 = int(2)
end module dataModule

program moduleTest
use dataModule, only: datum1

write(*,*) "datum 1 is", datum1
write(*,*) "datum 2 is", datum2

end program moduleTest

示例输出:

datum 1 is           1
datum 2 is 4.58322689E-41

最佳答案

您的代码有问题,而不是编译器。 If datum2 被使用关联,尽管 only 子句和 if datum2 的显式初始化> 被忽略了,那么是的,那将是一个顽皮的编译器。

不过,答案要平凡得多。

datum2 没有使用关联:在没有 implicit none 的情况下,它是主程序中的隐式类型变量。 “垃圾”来自这样一个事实,即在引用其值之前未通过初始化或赋值定义它,并且它是隐式(默认)真实的。编译器不需要在编译(或运行)时检测此错误。

关于compilation - 此 FORTRAN 代码不应编译。这是有原因的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27321711/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com