В чем разница между & и && в MATLAB?
в чем разница между &
и &&
логические операторы в MATLAB?
7 ответов:
одиночный амперсанд & - это логический оператор. Двойной амперсанд && снова является логическим и оператором, который использует поведение короткого замыкания. Короткое замыкание просто означает, что второй операнд (правая сторона) оценивается только тогда, когда результат не полностью определяется первым операндом (левая сторона)
A и B (A и B оцениваются)
A && B (B оценивается только в том случае, если a истинно)
&&
и||
всегда принимайте скалярные входы и короткое замыкание.|
и&
принимайте входы массива и короткое замыкание только в операторах if/while. Для назначения, последнее не делает короткое замыкание.посмотреть эти страницы doc для получения дополнительной информации.
как уже упоминалось в других отзывах,
&
Это логический и оператор и&&
это короткое замыкание и оператор. Они отличаются тем, как вычисляются операнды а также независимо от того, работают ли они на массивах или скалярах:
&
(оператор) и|
(или оператор) может работать на массивы в элементной форме.&&
и||
версии короткого замыкания для которой второй операнд вычисляется только тогда, когда результат не полностью определяется первым операндом. Они могут работать только на скаляры, а не массивы.
оба логические и операции. & & , Хотя, является оператором "короткого замыкания". Из документов MATLAB:
Они являются операторами короткого замыкания в том, что они оценивают свой второй операнд только тогда, когда результат не полностью определяется первым операндом.
Посмотреть подробнее здесь.
Как и в других языках, ' & 'является логическим побитовым оператором, а' & & ' - логической операцией.
например (простите мой синтаксис).
Если A = [True True False True] B = False
A & B = [False False False False]
..или если B = True A & B = [True True False True]
для '& & ' правый операнд вычисляется только в том случае, если левый операнд имеет значение true, и результатом является одно логическое значение.
x = (b ~= 0) &&(a / b > 18.5)
надеюсь, что это ясно.
&& и | / are короткое замыкание операторы, работающие на скалярах. & и / всегда оценивают оба операнда и работают с массивами.
хорошее эмпирическое правило при построении аргументов для использования в условных операторах (IF, WHILE и т. д.) это к всегда Используйте & & / | | формы, если нет очень веской причины не делать этого. Есть две причины...
- как уже упоминалось, поведение короткого замыкания & & | | / похоже на большинство C-подобных языков. Это сходство / знакомство обычно считается точкой в его пользу.
- использовать && или || формы сил вы должны написать полный код для определения вашего намерения для векторных аргументов. Когда a = [1 0 0 1] и b = [0 1 0 1], является ли a&b истинным или ложным? Я не могу вспомнить правила для MATLAB&, не так ли? С другой стороны, если вы используете && или||, вы вынуждены написать код "в полном объеме", чтобы решить это условие.
выполнение этого, вместо того, чтобы полагаться на разрешение векторов MATLAB в & и|, приводит к коду, который немного более подробен, но намного безопаснее и проще поддерживать.