美文网首页
操作符优先级和执行顺序

操作符优先级和执行顺序

作者: xdqkid | 来源:发表于2017-08-27 14:35 被阅读0次

今天才发现原来有人把操作符优先级和执行顺序混在一起了 ——轮子哥​​​

举个例子来说明操作符优先级和执行顺序之间的关系就知道了。

1 + 2 + 3 × 4 = 3 + 3 × 4 = 3 + 12 = 15
乘法优先级高于加法,然而先执行的是加法运算。

该如何解释这种现象呢

如果提到波兰式和逆波兰式的话,就明白的话,就不用向下看了(逃

逆波兰表示法Reverse Polish notationRPN,或逆波兰记法),是一种是由波兰数学家扬·武卡谢维奇1920年引入的数学表达式方式,在逆波兰记法中,所有操作符置于操作数的后面,因此也被称为后缀表示法。逆波兰记法不需要括号来标识操作符的优先级。
——喂鸡百科

划重点了,逆波兰记法不需要括号来标识操作符的优先级
也就是说,表达式和运算符优先级没什么关系。括号是用来确定语法树结构的,而优先级的作用就是少写两个括号,书写观看方便点。

如果还不明白,或者不了解逆波兰式,再举个例子就明白了,(懒,直接贴喂鸡的Demo了

中缀表达式“5 + ((1 + 2) * 4) − 3”写作
5 1 2 + 4 * + 3 −
下表给出了该逆波兰表达式从左至右求值的过程,堆栈栏给出了中间值,用于跟踪算法。

输入 操作 堆栈 注释
5 入栈 5
1 入栈 5, 1
2 入栈 5, 1, 2
+ 加法运算 5, 3 (1, 2)出栈;将结果(3)入栈
4 入栈 5, 3, 4
* 乘法运算 5, 12 (3, 4)出栈;将结果(12)入栈
+ 加法运算 17 (5, 12)出栈;将结果 (17)入栈
3 入栈 17, 3
减法运算 14 (17, 3)出栈;将结果(14)入栈

计算完成时,栈内只有一个操作数,这就是表达式的结果:14
上述运算可以重写为如下运算链方法(用于HP的逆波兰计算器)
1 2 + 4 * 5 + 3 −

相关文章

  • 操作符优先级和执行顺序

    今天才发现原来有人把操作符优先级和执行顺序混在一起了 ——轮子哥​​​ 举个例子来说明操作符优先级和执行顺序之间的...

  • 四、MySQL常用函数

    操作符优先级 • 下图展示了所有操作符的执行优先级,从高到低,同一行中的操作符优先级相同,相同优先级的情况下则从左...

  • JMeter:执行顺序与作用域

    一、执行顺序 类似于运算符或操作符的优先级,当JMeter测试中包含多个不同的元素时,哪些元素先执行,哪些元素后执...

  • 无标题文章

    同步任务: 优先级高,在线程中有执行顺序,不会开启新的线程 异步任务: 优先级低,在线程中执行没有顺序,看cpu闲...

  • JavaScript一元操作符

    只能操作一个值的操作符叫做 一元操作符 1.递增和递减操作符 前置型 由于前置递增和递减操作于执行语句的优先级相等...

  • Java运算符优先级

    优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。 相同优先级中,按结合顺序计算。大多数...

  • (四)Dart操作符、代码注释

    一、Operators(操作符) 注:expr为表达式,操作符的优先级在下表中自上而下的顺序由高到低。 1.1. ...

  • jmeter-执行顺序(20170830)

    jmeter 执行顺序(按优先级排列): 4.采样器

  • Shell基础脚本-运算符优先级

    在脚本中,运算执行的顺序被称为优先级: 高优先级的操作会比低优先级的操作先执行表-1. 运算符优先级(从高到低) ...

  • Java运算符优先级

    运算符的优先级决定了表达式中运算执行的先后顺序。通常优先级由高到底的顺序依次是:1.增量和减量运算。2.算术运算。...

网友评论

      本文标题:操作符优先级和执行顺序

      本文链接:https://www.haomeiwen.com/subject/rdwbdxtx.html