回答
&
是按位AND運算符。正如documentation提到,位運算符比邏輯運算符的優先級高,所以
0 == 0 & 1 == 1
變爲
0 == (0 & 1) == 1
你能想象它去下坡從那裏:
0 == (0 & 1) == 1
=> 0 == 0 == 1
=> 0 == 0 and 0 == 1
=> True and False
=> False
假設什麼你想要的是一個邏輯和,python的方式來做到這一點將使用and
:
0 == 0 and 1 == 1
你可以像你期望的那樣給你True
。
謝謝!這是我正在尋找的解釋。 – PollPenn
@PollPenn不客氣! –
讓我們打破這一點。
這裏最高優先級的符號是括號。除了我們包裝整個表達,所以他們什麼都不做。
接下來我們有位運算符&
。
0 & 1
其等於0
。
這給我們留下了0 == 0 == 1
由於0
不等於1
,我們得到False
。
僅供參考,這裏是關於operator precedence的python文檔。
'0&1'產生'0',而不是'1'...'0&ANYINTEGER'產生'0'。最終結果是相似的,但中間步驟是錯誤的。 – ShadowRanger
哎呀,一定是在想'''。謝謝:P – Shadow
- 1. 0 == *評估結果爲true,0 === *評估結果爲false
- 2. 爲什麼+和*分別評估爲0和1?
- 3. 爲什麼這個表達式繼續評估爲0
- 4. 爲什麼-1/2在C++中評估爲0,但在Python中爲-1?
- 5. Common Lisp爲什麼(列表+ 1 2)評估爲('(+ 1 2)1 2)
- 6. underscore.js中的負數:爲什麼_isEqual(0,-1 * 0)返回false?
- 7. 爲什麼cos(M_PI_2)== float(0)評估爲false? C++
- 8. 爲什麼〜0是-1?
- 9. 爲什麼0 + 1 == 49?
- 10. 爲什麼2 + 1&0結果是0?
- 11. 爲什麼0%0會導致1?
- 12. 紅寶石爲什麼0 || 1是0
- 13. 爲什麼(0> 1 + 0> 9)返回False,但((0> 1)+(0> 9))返回0?
- 14. 爲什麼count函數爲false返回1,爲NULL爲0
- 15. 爲什麼這個JavaScript表達式評估爲false?
- 16. 條件表達式總是在C中評估爲0或1嗎?
- 17. 正則表達式0 * 1 * 1 + 11 * 0 * 1 DFA
- 18. 爲什麼評估「(Double.MinValue + 1)> Double.MinValue」爲false?
- 19. 爲什麼`to_unsigned(0,4)> = -1`在運行時評估爲`FALSE`?
- 20. 爲什麼$((true == false))在bash中評估爲1?
- 21. 爲什麼0 && 1是1,而1 && 0在紅寶石中是0?
- 22. 爲什麼這個表達式評估爲false?
- 23. 表達式:「(_Ptr_user&(_ BIG_ALLOCATION_ALIGNMENT - 1))== 0」&& 0
- 24. 爲什麼-1 >> 1是-1?而1 >> 1是0!
- 25. 爲什麼1/inf == 0但是1/0!= inf?
- 26. 爲什麼!x將1和0更改爲true/false
- 27. 爲什麼trunc(1)輸出爲0?
- 28. 爲什麼在VB.Net中評估爲false?
- 29. 如果[0] == 0和0 == [[0]]都爲真,爲什麼[0] == [[0]]爲false?
- 30. 在Ruby中,爲什麼nil [1] = 1評估爲零?
使用'和'進行邏輯和操作。 '&'用於位操作。 – tsh