2016-04-16 28 views
8

Tại sao biểu thức n&1 == 0 luôn trả về false, trong đó n là một số nguyên?Tại sao "n & 1 == 0" luôn trả về false?

Tôi muốn sử dụng thao tác bitwise để xác định xem n có đồng đều hay không. Tuy nhiên, nó luôn luôn trở lại sai. (Clion cũng nhắc tôi rằng nó luôn trả về false).

Hơn nữa, nó hoạt động khi tôi sử dụng n&1 != 0 để xác định xem n có phải là số lẻ hay không.

+4

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

+1

Nếu '(n & 1) == false' thì đó là số chẵn và số lẻ. Trong g ++, biên dịch với tùy chọn '-Wall' để nó cho bạn cảnh báo' n & 1 == 0' để đặt dấu ngoặc ôm xung quanh. – iammilind

+0

cách bạn có nó trông giống như 'n & (1 == 0)' vì '1 == 0' luôn luôn là 0, chúng ta có' n & 0' luôn là 0 – JackVanier

Trả lời

19

Vì ưu tiên của nhà điều hành.

== có mức độ ưu tiên cao hơn nhà điều hành &, vì vậy 1 == 0 được đánh giá đầu tiên là 0. Sau đó, bit khôn ngoan VÀ được thực hiện cuối cùng sẽ trả về false.

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