2017-10-17 81 views

Odpowiedz

14

& 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ć.

+0

Dziękujemy! Oto wyjaśnienie, którego szukałem. – PollPenn

+0

@PollPenn Nie ma za co! –

5

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.

+1

'0 & 1' tworzy' 0', a nie '1' ...' 0 & ANYINTEGER' tworzy '0'. Wynik końcowy jest podobny, ale krok pośredni jest nieprawidłowy. – ShadowRanger

+0

Ups, musiało myśleć o '|'. Dzięki: P – Shadow