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?
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?
Vì toán tử &
is evaluated after nhà điều hành +
và 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 */
tìm kiếm Ưu tiên toán tử trong C/C++. –