共计 486 个字符,预计需要花费 2 分钟才能阅读完成。
总体解释
首先,‘and’、‘or’和‘not’的优先级是 not>and>or。
其次,逻辑操作符 and 和 or 也称作短路操作符(short-circuitlogic)或者惰性求值(lazy evaluation):它们的参数从左向右解析,一旦结果可以确定就停止。例如,如果 A 和 C 为真而 B 为假,A and B and C 不会解析 C。作用于一个普通的非逻辑值时,短路操作符的返回值通常是最后一个变量。因此,逻辑运算符的理解也与 C 语言中不同。举个例子:
输出内容:
在以上例子中,按照 C 语言对的思维,3 and 4 即 3 与 4 为 3,但是由于是短路操作符,结果为 4,是因为 and 运算符必须所有的运算数都是 true 才会把所有的运算数都解析,并且返回最后一个变量,即为 4;改变一下顺序 4 and 3,结果也不一样,即为 3
而或逻辑(or),即只要有一个是 true,即停止解析运算数,返回最近为 true 的变量,即 3 or 4,值为 3;改变顺序 4 or 3 即为 4
个人理解
赋值变量为非布尔型时,进行判断永远返回真,所以 and 时,由于两个值都是 true,则返回末尾的值,or 时,由于第一个已经是 true 了,所以第二个将不再继续判断。
正文完