正宽度误差?

时间:2015-05-01 06:41:13

标签: fortran fortran90

我使用FORTRAN 90通过构建二进制表达式树来计算表达式。我已经为post_order_traversal创建了一个子例程,并希望格式化一个write语句来输出结果而不会前进到下一行。这就是我到目前为止所做的:

Print*, 'The Postfix Expression:' 

Write(101,*) tempPOinter%exp

101 Format (1x, A3, Advance='no') 

                                          1

然而,当我尝试编译时,我收到一条错误,上面写着“格式说明符D中所需的正宽度(1)。如果有人知道这意味着什么或如何解决它,我会非常感谢你的帮助! 谢谢。

1 个答案:

答案 0 :(得分:7)

首先,您已将格式行号放入单位位置。我想你想要的更像是

write(*, 101) tempPOinter%exp

其次,advance=no参数需要放在write语句中,如下所示:

write(*, 101, advance="no") tempPOinter%exp
101 format(1X, A3)

您也可以将所有内容放在一行:

write(*, '(1X, A3)', advance='no') tempPOinter%exp

它的价值:当它试图解释你的格式声明时出现错误:

101 Format (1x, A3, Advance='no')
  • 1X - 一个空格
  • A3 - 3个字母的字符串
  • A - 任意长度字符串
  • d - 双精度浮点数 - 需要长度和多少位数!错误!