Câu trả lời:
Dấu và & là toán tử logic AND. Ký hiệu kép và && lại là một toán tử AND logic sử dụng hành vi đoản mạch. Ngắn mạch chỉ có nghĩa là toán hạng thứ hai (phía bên phải) chỉ được đánh giá khi kết quả không được xác định đầy đủ bởi toán hạng đầu tiên (phía bên trái)
A & B (A và B được đánh giá)
A && B (B chỉ được đánh giá nếu A đúng)
d != 0 && 1/d
vs d !=0 & 1/d
- bên nhận bảo lãnh đầu tiên không có phép chia cho không, thứ hai thì không.
&
làm ngắn mạch nếu trong một if
câu lệnh. Và &&
nhận đầu vào vô hướng. Câu trả lời của @ Loren dưới đây là đúng.
&&
và luôn ||
lấy đầu vào vô hướng và đoản mạch. |
và chỉ &
lấy đầu vào mảng và ngắn mạch trong câu lệnh if / while. Đối với nhiệm vụ, sau này không ngắn mạch.
Xem các trang tài liệu này để biết thêm thông tin.
&
và |
trong câu lệnh if / while không? Nó dường như không phải là trường hợp của R2012b và R2014a.
Như đã được đề cập bởi những người khác, &
là toán tử AND logic và &&
là toán tử AND ngắn mạch . Chúng khác nhau về cách các toán hạng được đánh giá cũng như việc chúng có hoạt động trên mảng hay vô hướng hay không:
&
(Toán tử AND) và |
(Toán tử OR) có thể hoạt động trên mảng theo kiểu khôn ngoan.&&
và ||
là các phiên bản ngắn mạch mà toán hạng thứ hai chỉ được đánh giá khi kết quả không được xác định đầy đủ bởi toán hạng thứ nhất. Chúng chỉ có thể hoạt động trên vô hướng , không phải mảng.Tương tự như các ngôn ngữ khác, &
là một toán tử logic bitwise, trong khi &&
là một phép toán logic.
Ví dụ (xin lỗi cú pháp của tôi).
Nếu..
A = [True True False True]
B = False
A & B = [False False False False]
..hoặc là..
B = True
A & B = [True True False True]
Đối với &&
, toán hạng bên phải chỉ được tính nếu toán hạng bên trái là true và kết quả là một giá trị boolean duy nhất.
x = (b ~= 0) && (a/b > 18.5)
Hy vọng điều đó rõ ràng.
bitand
là toán tử AND logic bit trong MATLAB.
&& và || là các toán tử ngắn mạch hoạt động trên vô hướng. & và | hoạt động trên mảng và chỉ sử dụng tính năng đoản mạch trong ngữ cảnh của if
hoặc while
biểu thức vòng lặp.
Một nguyên tắc nhỏ khi xây dựng các đối số để sử dụng trong các câu lệnh điều kiện (IF, WHILE, v.v.) là luôn sử dụng && / || biểu mẫu, trừ khi có một lý do chính đáng để không. Có hai lý do ...
Làm điều này, thay vì dựa vào độ phân giải vectơ trong & và | của MATLAB, dẫn đến mã dài dòng hơn một chút, nhưng an toàn hơn và dễ bảo trì hơn RẤT NHIỀU.
r((r<2)&(r<2))
".
&
có thể hoạt động trên mảng nhưng&&
chỉ có thể hoạt động trên vô hướng.