Chúng ta đều biết rằng các toán tử logic ngắn &&
nếu toán hạng bên trái là false
, bởi vì chúng ta biết rằng nếu một toán hạng là false
, thì kết quả cũng là false
.Tại sao không có mạch điều khiển bitwise & ngắn mạch?
Tại sao nhà điều hành bitwise &
cũng không đoản mạch? Nếu toán hạng bên trái là 0
, thì chúng tôi biết rằng kết quả cũng là 0
. Mỗi ngôn ngữ tôi đã thử nghiệm này trong (C, Javascript, C#) đánh giá cả hai toán hạng thay vì dừng sau lần đầu tiên.
Có bất kỳ lý do nào tại sao lại là một ý tưởng tồi khi cho phép ngắn mạch của nhà điều hành &
? Nếu không, tại sao không phải hầu hết các ngôn ngữ làm cho nó ngắn cicuit? Nó có vẻ như một sự tối ưu hóa rõ ràng.
Một lý do sẽ là cho phép tác dụng phụ của các cuộc gọi chức năng. –
Vì các toán tử bitwise thường được sử dụng cho các toán tử số nguyên (và các toán tử thường tương ứng với các hướng dẫn máy đơn), nó sẽ là bất cứ điều gì khác ngoài việc tối ưu hóa để bổ sung điều kiện để kiểm tra các trường hợp hiếm hoi. Tại sao phép nhân không ngắn mạch trên 0? Vâng, bởi vì nó là một phép tính số học đơn giản tương ứng với một lệnh máy đơn lẻ và việc kiểm tra không ai sẽ kiểm tra mọi phép nhân cho toán hạng 0. –
Toán tử bit '|' có thể đoản mạch nếu toán hạng bên trái là '0xFFFFFFFF'. –