2017-10-17 30 views

Trả lời

14

&bitwise AND toán tử. Như đã đề cập trong documentation, nhà khai thác Bitwise có ưu tiên cao hơn toán tử logic, vì vậy

0 == 0 & 1 == 1 

trở thành

0 == (0 & 1) == 1 

Và bạn có thể tưởng tượng nó đi xuống dốc từ đó:

0 == (0 & 1) == 1 
=> 0 == 0 == 1 
=> 0 == 0 and 0 == 1 
=> True and False 
=> False 

Giả sử những gì bạn muốn là hợp lý VÀ, cách trăn để làm điều đó sẽ sử dụng and:

0 == 0 and 1 == 1 

Cung cấp cho bạn True như bạn mong muốn.

+0

Cảm ơn bạn! Đây là lời giải thích mà tôi đang tìm kiếm. – PollPenn

+0

@PollPenn Bạn được chào đón! –

5

Hãy chia nhỏ điều này.

Dấu hiệu ưu tiên cao nhất ở đây là dấu ngoặc vuông. Trừ khi chúng tôi gói toàn bộ biểu hiện, nên họ không làm gì cả.

Tiếp theo, chúng tôi có toán tử bitwise &.

0 & 1 bằng 0.

này lá chúng tôi với 0 == 0 == 1

Như 0 không bằng 1, chúng tôi nhận False.

Để tham khảo, đây là tài liệu python về operator precedence.

+1

'0 & 1' tạo' 0', không phải '1' ...' 0 & ANYINTEGER' tạo '0'. Kết quả cuối cùng là tương tự, nhưng bước trung gian là sai. – ShadowRanger

+0

Rất tiếc, đã phải suy nghĩ về '|'. Cảm ơn: P – Shadow

Các vấn đề liên quan