2012-10-31 16 views
0

我无法弄清楚这个“9999”在e20.8之前在这个fortran写入声明的标签中是什么。Fortran写声明:这个“9999”在做什么?

是否不引用代码中的任何其他行。换句话说,它没有在程序的其他地方标出9999。

write(11,'(9999e20.8)') (9999.0, i=1,2*(numant+numunique)) 

我猛然一惊 - 我还没有发现从谷歌网络搜索的答案,虽然我觉得我得到写语句的语法和格式的概貌。

这是足够的信息提供意义吗?

回答

3

这是一个重复计数;格式代码的一般格式是(计数)(类型)(格式),例如,如this tutorial here中所述。

与基于C的语言不同,未使用的格式代码简单地被忽略,因此该行基本上指出“以科学格式(小数点后8位数字)输出尽可能多的实数”,如下面的输出列表中所示。 (如果你不喜欢这样做,用一个硬编码“足够大”的数字,你将不得不以编程方式生成格式字符串以获得“正确的”重复代码。

输出列表是implied-do loop ,生成数9999.0 2*(numant+numuniqe)

+0

非常感谢@Jonathan,我想我理解你的回答,但是现在我不明白重复计数的重要性,因为输出已经被i索引循环了“(9999.0,i = 1,2 *(numant + numunique)”,为什么他们需要说重复这个格式,e20.8,9999次?你已经回答了,所以如果你不'没有时间为这个后续,仍然,非常感谢。 - Shana – yes

+0

你需要一个格式代码每个输出项目,所以有ne eds至少是'e20.8'的'2 *(numant + numunique)'。但是这个价值在编译时是不知道的,所以上面的这一行使得9999个值得信任。另一种方法是在运行时生成格式字符串,这实际上并不困难。 –

+0

啊,有趣。非常感谢。我会研究你的建议选择。非常感谢和祝福。 – yes