2012-09-03 62 views
-1

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

意义:为什么x/y * z评估为(x/y) * z使/具有相同的优先级为*但在逻辑运算符x || y && z将评估为x || (y && z) 那么,有没有这种区别(一些硬件原因,优化技术),或一个合乎逻辑的理由它只是编程语言创建者决定使它们的方式?

+2

考虑'x + y * z'。算术运算符也有一个优先级层次结构。 –

+0

不是线索。无论如何,我总是把这些东西甩开。我,(以及任何不幸不得不维护/增强我的代码的人)不必认真考虑。 –

+0

@GregHewgill我和你在一起100%,但我无法想出为什么两者都不具有相同的优先顺序的理由..他们似乎更像(/和*)比(*和+)来我 – zeacuss

回答

3

这不是关于编程。曾经使用布尔代数? AND优先于OR,布尔代数从17世纪开始(尽管我不知道这个约定是什么时候发生的)。这两者也被写为*和+,这在这方面提供了一个线索(但可以在其他方面混淆)。

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

0

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

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

换句话说||更像是“从左到右的加减”,并且更像是“从左到右的乘法”

还记得那个! (不)的优先级高于& &(AND)