我使用FORTRAN 90通过构建二进制表达式树来计算表达式。我已经为post_order_traversal创建了一个子例程,并希望格式化一个write语句来输出结果而不会前进到下一行。这就是我到目前为止所做的:
Print*, 'The Postfix Expression:'
Write(101,*) tempPOinter%exp
101 Format (1x, A3, Advance='no')
1
然而,当我尝试编译时,我收到一条错误,上面写着“格式说明符D中所需的正宽度(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
- 双精度浮点数 - 需要长度和多少位数!错误!