【问题标题】:mathematical VS logical operators precedence数学 AND 逻辑运算符优先级
【发布时间】:2012-09-03 23:22:59
【问题描述】:

为什么在大多数编程语言中,数学运算符的优先级与逻辑运算符的优先级不同。

含义:为什么x / y * z 的计算结果为( x / y ) * z,所以/ 的优先级与* 相同,但在逻辑运算符中x || y && z 的计算结果为x || ( y && z ) 那么,这种区别是否有逻辑上的原因(某些硬件原因、​​优化技术)还是仅仅是编程语言创建者决定制作它们的方式?

【问题讨论】:

  • 考虑x + y * z。算术运算符也有优先级。
  • 没有线索。无论如何,我总是把这些东西放在一边。我(以及任何不幸不得不维护/增强我的代码的人)不必/不必考虑太多。
  • @GregHewgill 我和你在一起 100% ,但我想不出为什么两者的优先级不同的原因。他们看起来更像 (/ 和 ) 比 ( 和 +) 对我来说

标签: programming-languages logical-operators


【解决方案1】:

这与编程无关。曾经使用过布尔代数吗? AND 也优先于 OR,布尔代数来自 17 世纪(尽管我不知道这个约定是什么时候形成的)。两者也写为 * 和 +,这提供了这方面的线索(但在其他方面可能会混淆)。

编程语言设计者只是继承了这些优先规则,就像他们继承了算术运算符的优先级一样。

【讨论】:

    【解决方案2】:

    可能正是编程语言创建者决定制作它们的方式。

    更具体地说,如果缺少括号,程序员可能希望在 OR 之前评估 AND 语句。

    换句话说||更像是“从左到右的加法或减法”,而 && 更像是“从左到右的乘除法”

    还要记住这一点! (not) 的优先级甚至高于 && (AND)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-03
      • 2018-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多