为什么在大多数编程语言中,数学运算符的优先级与逻辑运算符的优先级不同。
含义:为什么x / y * z
计算结果与逻辑运算( x / y ) * z
符/
具有相同的优先级*
但是在逻辑运算符x || y && z
中计算结果是x || ( y && z )
所以,这种区别是否存在逻辑原因(某些硬件原因,优化技术),或者它只是编程语言创建者决定的方式他们??
为什么在大多数编程语言中,数学运算符的优先级与逻辑运算符的优先级不同。
含义:为什么x / y * z
计算结果与逻辑运算( x / y ) * z
符/
具有相同的优先级*
但是在逻辑运算符x || y && z
中计算结果是x || ( y && z )
所以,这种区别是否存在逻辑原因(某些硬件原因,优化技术),或者它只是编程语言创建者决定的方式他们??
这与编程无关。曾经使用过布尔代数吗?AND 也优先于 OR,布尔代数来自 17 世纪(尽管我不知道这个约定是什么时候形成的)。两者也写为 * 和 +,这提供了这方面的线索(但在其他方面可能会混淆)。
编程语言设计者只是继承了这些优先规则,就像他们继承了算术运算符的优先级一样。
可能正是编程语言创建者决定制作它们的方式。
更具体地说,在缺少括号的情况下,程序员可能希望在 OR 之前评估 AND 语句。
换句话说|| 更像是“从左到右的加法或减法”,而 && 更像是“从左到右的乘除法”
还记得!(not) 的优先级甚至高于 && (AND)