Programming languages 数学运算符优先于逻辑运算符优先

Programming languages 数学运算符优先于逻辑运算符优先,programming-languages,logical-operators,Programming Languages,Logical Operators,为什么在大多数编程语言中,数学运算符的优先级不同于逻辑运算符的优先级 意思:为什么x/y*z的计算结果为(x/y)*z,因此/与*具有相同的优先级,但在逻辑运算符中x | y&&z的计算结果为x | |(y&&z) 那么,这种区别是否有逻辑上的原因(某些硬件原因、优化技术)或者仅仅是编程语言创建者决定这样做的方式???可能只是编程语言创建者决定这样做的方式 更具体地说,程序员可能希望AND语句在缺少括号之前或在缺少括号的情况下进行求值 换句话说| |更像是“从左到右的加减法”&&更像是“从左到右

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

意思:为什么
x/y*z
的计算结果为
(x/y)*z
,因此
/
*
具有相同的优先级,但在逻辑运算符中
x | y&&z
的计算结果为
x | |(y&&z)

那么,这种区别是否有逻辑上的原因(某些硬件原因、优化技术)或者仅仅是编程语言创建者决定这样做的方式???

可能只是编程语言创建者决定这样做的方式

更具体地说,程序员可能希望AND语句在缺少括号之前或在缺少括号的情况下进行求值

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


还记得吗!(not)的优先级甚至高于&(AND)

这与编程无关。你学过布尔代数吗?布尔代数是从17世纪开始的(虽然我不知道这个惯例是什么时候形成的)。这两个词也写为*和+,这在这方面提供了线索(但在其他方面可能会混淆)


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

考虑一下
x+y*z
。算术运算符也有一个优先级层次结构,而不是一条线索。不管怎样,我总是把这些东西放在一边。一、 (以及任何不幸不得不维护/增强我的代码的人),不必/不必太费劲地思考。@GregHewgill我100%同意你的观点,但我想不出为什么两者的优先级不一样的原因。。在我看来,他们更像(/和)而不是(和+)