我知道这可能听起来像个愚蠢的问题:
之间有什么区别write(*,*)
和
write(6,*)
? 我在我学院的超级计算机上运行一个复杂的代码,它通过一个不同于6的单元号输出一个数据文件,显然编译的Fortran代码与上面的代码只有上面的代码给了我一个不同的数据文件(即数据做)不匹配)。
我知道(*,*)
格式转到标准输出,而(6,*)
在屏幕上呈现,但我真的很困惑为什么这会对我的实际数据产生影响。任何关于如何工作的想法都将受到赞赏!
答案 0 :(得分:2)
*
表示的单位是"标准输出" (不是真正的Fortran标准术语)。它通常预先连接为6号单元,但它可以连接到不同的 - 编译器选项控制它。您可以使用模块OUTPUT_UNIT
iso_fortran_env
进行检查
OUTPUT_UNIT:
Identifies the preconnected unit identified by the asterisk (*) in WRITE statement.
(来自gfortran文档)
大多数情况下,两者的结果可能相同。如果不是你的情况,你必须表明差异是什么样的。
如果您使用其他单位编号而您自己在自己的代码中打开它,则可能发生任何事情。您必须检查打开文件时使用的选项,即open
语句和编译器选项。