【问题标题】:Difference between write(*,*) and write(6,*) in FortranFortran 中 write(*,*) 和 write(6,*) 的区别
【发布时间】:2015-04-21 15:43:13
【问题描述】:

我知道这听起来像是一个愚蠢的问题:

write(*,*)

write(6,*)

? 我正在我研究所的超级计算机上运行一个复杂的代码,它通过一个不同于 6 的单元号输出一个数据文件,显然用上面的代码编译的 Fortran 代码给了我一个不同的数据文件(即数据不匹配)。

我知道(*,*) 格式进入标准输出,而(6,*) 呈现在屏幕上,但是我真的很困惑为什么这会对我的实际数据产生任何影响。任何有关其工作原理的想法都将不胜感激!

【问题讨论】:

    标签: fortran fortran90


    【解决方案1】:

    * 表示的单位是“标准输出”(不是真正的 Fortran 标准术语)。它通常作为单元号 6 预先连接,但它可以连接到不同的单元 - 编译器选项控制它。您可以使用模块iso_fortran_env 中的常量OUTPUT_UNIT 进行检查

    OUTPUT_UNIT:
        Identifies the preconnected unit identified by the asterisk (*) in WRITE statement. 
    

    (来自 gfortran 文档)

    通常可以预期两者的结果相同。如果不是您的情况,则必须显示差异是什么样的。

    如果您使用其他单元编号并使用自己的代码自己打开它,那么任何事情都可能发生。您必须检查打开文件时使用的选项,即open 语句和编译器选项。

    【讨论】:

    猜你喜欢
    • 2014-01-31
    • 2011-10-22
    • 1970-01-01
    • 2021-04-25
    • 2014-03-07
    • 2013-06-20
    • 1970-01-01
    • 1970-01-01
    • 2019-02-04
    相关资源
    最近更新 更多