gpt4 book ai didi

fortran - 我们还需要子程序吗?

转载 作者:行者123 更新时间:2023-12-04 13:06:28 25 4
gpt4 key购买 nike

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center为指导。




10年前关闭。




在 Fortran 中,函数和子程序之间存在明显的区别:函数返回一个值,子程序不返回任何值。这引入了两者之间的一系列差异。一个例子是调用语义:你可以像在其他语言中一样调用一个函数,但是为了调用一个子程序你必须发出 call先声明。

通过在 Fortran95 中添加指针和数据类型,似乎在使任何子程序成为函数并保留子例程仅用于遗留方面没有技术限制。函数可以返回零(您只返回一个虚拟整数)、一个或多个值(例如,您可以返回一个指向已分配类型实例的指针,如 C++ STL Pair)。

我错了吗?由于子例程具有而函数不具有的某些功能,我们在 Fortran 编程中是否仍然需要子例程?

最佳答案

如果您搜索 comp.lang.fortran 文件,您会发现有关函数语义的讨论。 IIRC 事实证明,标准中没有明确规定什么是有副作用的函数,什么是不允许的。

例如,编译器是否可以优化

x = foo(args) + foo(args)

进入

x = 2 * foo(args)

或者再举一个例子,考虑

x = y + foo(y)

如果 foo() 改变了 y 的值怎么办?请记住,Fortran 没有序列点的 C 概念。

一般而言,几位专家的建议是仅在纯函数时使用函数,否则使用子例程。而且,这也是我自己遵循的建议。

关于fortran - 我们还需要子程序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3941732/

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