我面临的问题是,当两个具有相同优先级的运营商是他们的时,该怎么做? 例: 如果^位于堆栈的顶部,^来了该怎么办? 我应该在堆栈中输入它还是只是弹出一个^或两个^从堆栈中出来?
由于两个运算符具有相同的优先级,因此只要不涉及括号,执行计算的顺序无关紧要。您可以将其推入堆栈并稍后进行计算,或者弹出现有计算以立即进行计算。
在这种情况下,该怎么做取决于运算符或其特定的优先级,并被称为运算符的关联性:https://en.wikipedia.org/wiki/Operator_associativity
通常+和 - 具有相同的优先级和左关联性,例如,意味着a + b-c + d =((a + b)-c)+ d。
赋值运算符通常具有右关联性,意味着a = b + = c = d与a =(b + =(c = d))相同
我没有做过详细的调查,但我认为取幂运算符通常具有正确的相关性,因为左关联性是乘法的冗余,即(a ^ b)^ c = a ^(b * c)