2016-04-16 19 views
8

Perché l'espressione n&1 == 0 restituisce sempre false, dove n è un numero intero?Perché "n & 1 == 0" restituisce sempre false?

Desidero utilizzare il funzionamento bit a bit per determinare se n è pari. Tuttavia, restituisce sempre false. (Il clion mi ha anche indotto a restituire sempre false).

Inoltre, funziona quando utilizzo n&1 != 0 per determinare se n è dispari.

+4

http://en.cppreference.com/w/cpp/language/operator_precedence –

+1

Se '(n & 1) == false', allora è pari numero e dispari altrimenti. In g ++, compila con l'opzione '-Wall' in modo che ti fornisca un avvertimento per' n & 1 == 0' per mettere le parentesi intorno. – iammilind

+0

il modo in cui hai sembra 'n & (1 == 0)' quindi dato che '1 == 0' è sempre 0 otteniamo' n & 0' che è sempre 0 – JackVanier

risposta

19

È a causa della precedenza dell'operatore.

== ha precedenza più alta rispetto all'operatore &, quindi 1 == 0 viene valutato prima a 0. Quindi viene eseguito il bit E saggio che alla fine restituisce falso.

Problemi correlati