我正在研究 Ivan Bratko 的书:“人工智能编程”
现在我正在研究运营商,对此我有一些疑问,在书上我可以阅读以下内容:
因此,运算符的优先级决定了表达式的正确解释是什么。例如,表达式a + b*c原则上可以理解为:
1. +(a, *(b,c))
或作为:
2. *(+(a,b), c)
现在我有第一个疑问:“这件事是什么意思?这似乎很奇怪,因为这两个表达式给出了不同的三个和不同的结果!!!
例如,如果我有:a=2
, b=3
,c=4
第一个的结果是 14,第二个的结果是 20,所以有不同:不同的 thress 意味着不同的运算符执行顺序,这意味着不同的结果!!!
所以我认为(使用算术运算符的通常优先级:首先执行乘法,然后执行总和)正确的表达式是第一个,第二个是错误的。
这是对的吗?
继续阅读我还可以阅读的书:
一般规则是具有最高优先级的运算符是该术语的主要函子。如果要根据我们的常规约定来理解包含 + 和 * 的表达式,则 + 的优先级高于 * 运算符
现在我有第二个疑问:正如我所说,在算术的正常约定中,我首先执行乘法,然后执行总和,所以我认为 * 运算符具有优先级而不是 +
我错过了什么?那为什么书上说+
优先级更高*
呢?