|
发表于 2021-12-29 14:14:29
|
显示全部楼层
本帖最后由 Stubborn 于 2021-12-30 14:13 编辑
The operator priority or precedence is important to evaluate arithmetic expression involving many operators. The order of evaluation of arithmetic operators is from left to right.
‎运算符优先级或优先级对于计算涉及许多运算符的算术表达式非常重要。算术运算符的计算顺序是从左到右。‎
题主的这里涉及到,算数运算符,和逻辑运算符
对于可以知道的结果,例如 1 or 0 。在左侧为真的情况下,程序可以直接发回,所以你的 1 or 2 + d 这里不会产生报错,因为后面不会处理。
对于不知道的结果,例如 1 and 2 ,在左侧为真的情况下,程序必须处理完右侧才能知道结果。
题主这样的 3 and 5 + True or False 测试: 3 and 5 + True or 3 + d 并未报错。
我比较倾向的解释流程是。从左到右,有结果就出结果。 expression1 and expression2 or expression3 not expression4
处理 3 是真,处理右侧
处理 5 + True 是 6,也是真 返回 6
这里就变成了 6 or False 直接返回6
如果觉得解释器看起来比较麻烦,可以看下更加简单一些的,计算器程序:https://fishc.com.cn/thread-170706-1-1.html
原则上这个就和处理计算一串字符串的算式一样
也有优先级 + - / * ( ) 但是从程序的角度来说,总是左到右。优先也只是说我需要它的结果,所以才优先处理。
譬如这个算数式 2 + 2 * 3 - 5 看做 2 and 2 * 3 or 5
|
|