2011-12-29 50 views
6

Trong VC2008, tôi gõ mã này:Tại sao kết quả 2 + 1 & 0 là 0?

int a = 2 + 1 & 0; 

và kết quả của biểu thức này là a = 0

Tại sao kết quả là 0 nhưng không 2?

+0

tìm kiếm Ưu tiên toán tử trong C/C++. –

Trả lời

17

Vì toán tử &is evaluated after nhà điều hành +3 & 0 bằng 0.

Tất nhiên bạn có thể đặt dấu ngoặc ôm quanh các biểu thức để thay đổi thứ tự đánh giá. Ví dụ:

int a = 2 + (1 & 0); 
/* a == 2 */ 
5

+ có mức ưu tiên cao hơn &. Here là bảng đầy đủ về quyền ưu tiên của toán tử.

+1

Bảng tốt, cảm ơn! – Spark

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