В чем разница между & и && в 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 в & и|, приводит к коду, который немного более подробный, но намного безопаснее и проще поддерживать.