В чем разница между &и &&логическими операторами в MATLAB?
Ответы:
Одиночный амперсанд & является логическим оператором И. Двойной амперсанд && снова является логическим оператором И, который использует поведение короткого замыкания. Короткое замыкание означает, что второй операнд (правая часть) оценивается только тогда, когда результат не полностью определяется первым операндом (левая сторона)
A и B (оцениваются A и B)
A && B (B оценивается, только если A истинно)
d != 0 && 1/dvs 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))».
&может работать с массивами, но&&может работать только со скалярами.