Podobnie (-1 == - 1 & 1 == 1) jest również Fałsz.Dlaczego wyrażenie (0 == 0 & 1 == 1) jest oceniane jako Fałsz?
Przepraszam, jeśli to coś oczywistego, ale nie mogę znaleźć wytłumaczenia.
Podobnie (-1 == - 1 & 1 == 1) jest również Fałsz.Dlaczego wyrażenie (0 == 0 & 1 == 1) jest oceniane jako Fałsz?
Przepraszam, jeśli to coś oczywistego, ale nie mogę znaleźć wytłumaczenia.
&
jest operatorem bitowym i bitowym i. Jak wspomniano w documentation operatorzy bitowe mają wyższy priorytet niż operatory logiczne, więc
0 == 0 & 1 == 1
Staje
0 == (0 & 1) == 1
I można sobie wyobrazić, to idzie z górki:
0 == (0 & 1) == 1
=> 0 == 0 == 1
=> 0 == 0 and 0 == 1
=> True and False
=> False
Zakładając, co chciałeś być logiczny i, sposób w jaki python to będzie używał and
:
0 == 0 and 1 == 1
Który daje True
, jak można się spodziewać.
Dziękujemy! Oto wyjaśnienie, którego szukałem. – PollPenn
@PollPenn Nie ma za co! –
Przerwijmy to.
Znak najwyższego priorytetu to nawiasy. Oprócz tego, że pakujemy całe wyrażenie, więc nic nie robią.
Następnie mamy operatora bitowego &
.
0 & 1
co równa się 0
.
Pozostawia nam 0 == 0 == 1
Jak 0
nie równa 1
otrzymujemy False
.
Dla odniesienia, tutaj jest dokumentacja python o operator precedence.
'0 & 1' tworzy' 0', a nie '1' ...' 0 & ANYINTEGER' tworzy '0'. Wynik końcowy jest podobny, ale krok pośredni jest nieprawidłowy. – ShadowRanger
Ups, musiało myśleć o '|'. Dzięki: P – Shadow
użyj "i" dla logicznych i operacji. '&' służy do operacji bitowej. – tsh