我知道这听起来像是一个愚蠢的问题:
write(*,*)和
write(6,*)?我在研究所的超级计算机上运行一个复杂的代码,它通过一个不同于6的单元号输出一个数据文件,显然,用上面的代码编译的Fortran代码给了我一个不同的数据文件(即,数据不匹配)。
我知道(*,*)格式用于标准输出,而(6,*)在屏幕上呈现,但是我真的很困惑为什么这会对我的实际数据产生影响。任何关于这是如何工作的想法将不胜感激!
发布于 2015-02-20 20:13:21
用*表示的单位是“标准输出”(不是真正的Fortran标准术语)。它通常作为单元编号6预先连接,但它可以连接到不同的单编译器选项控件。您可以在模块iso_fortran_env中使用常量OUTPUT_UNIT检查这一点
OUTPUT_UNIT:
Identifies the preconnected unit identified by the asterisk (*) in WRITE statement. (摘自gfortran文档)
大多数情况下,可以预期两者的结果是相同的。如果不是你的情况,你必须显示出差异是什么样子的。
如果您使用其他单元编号,并在您自己的代码中打开它,则任何事情都可能发生。您必须检查打开文件时使用的选项,即open语句和编译器选项。
https://stackoverflow.com/questions/28620899
复制相似问题