gpt4 book ai didi

fortran - Fortran 是否有未定义的行为?

转载 作者:行者123 更新时间:2023-12-04 05:05:48 34 4
gpt4 key购买 nike

在 C 和 C++ 中,有许多操作会导致未定义的行为,即允许编译器做任何它想做的事情的情况。 Examples包括在释放变量后使用它,释放变量两次和取消引用空指针。

Fortran 是否也有未定义的行为?我查看了规范草案,但没有在其中找到任何内容。例如,在释放变量后使用变量是否会保证程序崩溃,或者它可能会默默地做错事?

最佳答案

是的,它有。它只是叫法不同。您可以做很多事情,并且会使您的代码不符合标准,因此不需要处理器(编译器)诊断这种不符合性(当然,必须诊断许多偏差)。通常情况与 C 的未定义行为类似(例如访问数组越界、有符号整数溢出等)。我们只是说代码不符合标准,这意味着标准没有规定这样的代码的结果。此类代码未涵盖,但标准等 任何事情如果某些编译器(处理器)确实编译了它并且您确实运行了它,则可能会产生结果。
这与处理器相关的行为不同,后者是标准的且仅依赖于实现。
只是在 StackOverflow 上搜索应该会给你很多例子。赞 Is passing the same entity to arguments with different intent undefined behavior? How do Fortran and MPI_Reduce deal with integer overflow?
这个答案只是回答了所提出的问题,但并未尝试列出 Fortran 中可能发生的所有可能类型的 UB。

关于fortran - Fortran 是否有未定义的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57558684/

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