关于反向抛光符号的快速问题。
Why is 2*3/(2-1)+5*(4-1)?: (original)
23*21-/541-*+
rather than 23*21-/5+41-*?
我只是在困惑自己。就个人而言,我会在原始问题上添加额外的括号,以明确添加5的位置。如果它没有那么我认为它进入了什么顺序?
谢谢
答案 0 :(得分:1)
如果我们假设一个传统的操作顺序,那么在任何加法之前计算任何乘法。因此,当你有y + x * z时,首先根据通常的操作顺序计算x * z。更明确地,y + x * z表示(y +(x * z))。因此,2 * 3 /(2-1)+ 5 *(4-1)表示(((2 * 3)/(2-1))+(5 *(4-1)))。
如果您事先明确说明您在乘法之前规定了您的操作顺序,那么如果您写了4 + 5 * 6则表示((4 + 5)* 6)。如果你这样做,那么你可以将分配律说成x * y + z =(x * y)+(x * z)。省略操作时表达式意味着什么?考虑xy& z,其中&是二进制的,并且省略了xy的二进制运算。如果省略的二进制运算是*,和&是+,那么这意味着表达的操作&会在被抑制的乘法运算之前发生。通常,假设省略的操作首先发生。因此,如果你的加法具有绑定优先级而不是乘法,那么像xy这样的表达式可能意味着x + y而不是更常见的x * y。原则上,在乘法之前让添加发生似乎没有错,只要你声明你想要预先做到这一点并坚持这个约定及其对你写的任何内容的影响。这一切都说,除了与不了解RPN或PN的人沟通外,我根本不明白为什么一旦你理解了RPN和PN就会用中缀表示法写。
答案 1 :(得分:1)
这是因为乘法的优先级高于加法。当你没有大括号时,首先将5(仅)乘以(4-1)并添加到表达式的其余部分。如果您没有使用大括号,则仅根据优先顺序进行评估。