В чем разница между &
и &&
логическими операторами в MATLAB?
Ответы:
Одиночный амперсанд & является логическим оператором И. Двойной амперсанд && снова является логическим оператором И, который использует поведение короткого замыкания. Короткое замыкание означает, что второй операнд (правая часть) оценивается только тогда, когда результат не полностью определяется первым операндом (левая сторона)
A и B (оцениваются A и B)
A && B (B оценивается, только если A истинно)
d != 0 && 1/d
vs d !=0 & 1/d
- первое гарантирует отсутствие деления на ноль, второе - нет.
&
делает короткое замыкание, если в if
заявлении. И &&
принимает скалярные входы. @ Ответ Лорен ниже правильный.
&&
и ||
всегда принимайте скалярные входы и закорачивайте. |
и &
принимать входные данные массива и короткое замыкание только в операторах if / while. По назначению последние не замыкают.
См. Эти страницы документации для получения дополнительной информации.
&
и |
в операторах if / while? Похоже, что это не относится к R2012b и R2014a.
Как уже было сказано другими, &
является логическим оператором , и &&
это короткое замыкание и оператора . Они различаются тем, как оцениваются операнды, а также работают ли они с массивами или скалярами:
&
(Оператор И) и |
(Оператор ИЛИ) могут работать с массивами поэлементно.&&
и ||
являются версиями с коротким замыканием, для которых второй операнд оценивается только тогда, когда результат не полностью определяется первым операндом. Они могут работать только со скалярами , но не с массивами.Оба являются логическими операциями И. Однако && - это оператор "короткого замыкания". Из документов MATLAB:
Они являются операторами короткого замыкания в том смысле, что они оценивают свой второй операнд только тогда, когда результат не полностью определяется первым операндом.
Подробнее здесь .
Подобно другим языкам, &
это логический побитовый оператор, а &&
это логическая операция.
Например (простите за синтаксис).
Если..
A = [True True False True]
B = False
A & B = [False False False False]
..или..
B = True
A & B = [True True False True]
Для &&
правый операнд вычисляется только в том случае, если левый операнд истинен, а результатом является одно логическое значение.
x = (b ~= 0) && (a/b > 18.5)
Надеюсь, это ясно.
bitand
это побитовый логический оператор AND в MATLAB.
&& и || являются короткие замыкания операторов , работающих на скаляров. & и | работают с массивами и используют короткое замыкание только в контексте выражений цикла if
или while
.
Хорошее практическое правило при создании аргументов для использования в условных операторах (IF, WHILE и т. Д.) - всегда использовать && / || формы, если нет веской причины не делать этого. Есть две причины ...
Выполнение этого вместо того, чтобы полагаться на разрешение векторов в MATLAB в & и |, приводит к коду, который немного более подробный, но НАМНОГО безопаснее и проще в обслуживании.
r((r<2)&(r<2))
».
&
может работать с массивами, но&&
может работать только со скалярами.