Tương tự (-1 == - 1 & 1 == 1) cũng sai.Tại sao biểu thức (0 == 0 & 1 == 1) đánh giá sai?
Xin lỗi nếu đây là điều gì đó hiển nhiên nhưng tôi không thể tìm thấy lời giải thích cho nó.
Tương tự (-1 == - 1 & 1 == 1) cũng sai.Tại sao biểu thức (0 == 0 & 1 == 1) đánh giá sai?
Xin lỗi nếu đây là điều gì đó hiển nhiên nhưng tôi không thể tìm thấy lời giải thích cho nó.
&
là 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.
Cảm ơn bạn! Đây là lời giải thích mà tôi đang tìm kiếm. – PollPenn
@PollPenn Bạn được chào đón! –
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.
'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
Rất tiếc, đã phải suy nghĩ về '|'. Cảm ơn: P – Shadow
sử dụng 'và' cho hợp lý và hoạt động. '&' được sử dụng cho hoạt động bit. – tsh