后缀转换



中缀表达式: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。

最新更新