1 回答

TA貢獻1943條經驗 獲得超7個贊
‘and’、‘or’和‘not’的優先級是not>and>or
首先,‘and’、‘or’和‘not’的優先級是not>and>or。
and :x and y 返回的結果是決定表達式結果的值。如果 x 為真,則 y 決定結果,返回 y ;如果 x 為假,x 決定了結果為假,返回 x。
or :x or y 跟 and 一樣都是返回決定表達式結果的值。
not : 返回表達式結果的“相反的值”。如果表達式結果為真,則返回false;如果表達式結果為假,則返回true。
其次,邏輯操作符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.
添加回答
舉報