中缀表达式:A*B+C/D-E^F-G
标准后缀表达式:
AB*CD/+EF^-G-
我的程序生成的一个:AB*CD/EF^G--+
是的,编译器使用后缀表达式和前缀表达式以正确的顺序(根据它们的优先级)对操作数应用算术运算,它还可以帮助编译器执行未定义或不知道
的操作::::让我们举个例子:我必须计算表达式A?B$C#E
这里,A,B,C,E 是操作数,?,$,# 是要执行的操作。现在,问题我们不知道我们应该首先执行哪些操作,这与BODMAS不同。
那么解决方案是什么呢?
为了解决这个问题,只需在后缀或前缀表达式中更改表达式即可计算后缀表达式是AB?C$E#.现在可以轻松解决以获得适当的答案,而无需处理操作优先级。
那么我的程序产生对还是错
?
程序生成的表达式不正确。它计算
(A*B)+((C/D)-((E^F)-G))
而不是
(((A*B)+(C/D))-(E^F))-G
您的错误是使运算符向右关联,而不是向左关联。最终结果是 2G 的差异,您可以通过将所有变量设置为 1 轻松看到;您的公式返回 2,但正确的值为 0。