我面临的问题是,当两个具有相同优先级的运营商成为他们时该怎么办?
示例:
如果^位于堆栈的顶部,并且出现^,那该怎么办?
我应该将其输入堆栈还是仅弹出一个^或两个^都从堆栈中退出?
答案 0 :(得分:0)
由于两个运算符的优先级都相同,因此只要不涉及括号,执行计算的顺序就无关紧要。您可以将其推入堆栈,然后一起进行计算,也可以弹出现有的进行计算。
答案 1 :(得分:0)
在这种情况下该做什么取决于操作员或其特定的优先级,并称为操作员的关联性:https://en.wikipedia.org/wiki/Operator_associativity
通常 + 和-具有相同的优先级和左关联性,例如,表示 a + b-c + d =((a + b) -c)+ d 。
赋值运算符通常具有右关联性,这意味着 a = b + = c = d 与 a =(b + =(c = d)) < / p>
我没有做详细的调查,但是我认为指数运算符通常具有右结合性,因为左结合性在乘法中是多余的,即(a ^ b)^ c = a ^(b * c )