Какие преимущества есть в использовании либо И, либо &&?

StackOverflow https://stackoverflow.com/questions/953957

  •  11-09-2019
  •  | 
  •  

Вопрос

В настоящее время я использую && и || вместо И и ИЛИ, потому что так меня учили.Однако в большинстве языков оба являются допустимым синтаксисом.Есть ли какие-либо преимущества у того или иного на любом языке?

Я действительно пытался найти этот вопрос, но это немного сложно.Он неправильно интерпретирует мои входные данные.

Это было полезно?

Решение

Вы спрашиваете: “Есть ли какие-либо преимущества у того или иного на любом языке?” Это, конечно, зависит от языка программирования.

Языки , которые реализуют оба and и && (и соответственно or и ||) сделает это одним из двух способов:

  • Оба ведут себя совершенно одинаково.В этом случае язык не предоставляет никаких преимуществ в использовании одного из них по сравнению с другим.

  • Каждый ведет себя по-разному.В этом случае преимущество заключается в том, что вы можете получить различное поведение, используя тот или иной способ.

Все это звучит немного шутливо, но на самом деле это настолько конкретно, насколько это возможно без упоминания конкретного языка.Ваш вопрос явно хочет знать о ВСЕ языки, но это вопрос, на который нужно ответить для каждого языка.

Другие советы

Perl имеет все четыре {&& || и or}, но они отличаются своим приоритетом."и"и "или" имеют действительно низкий приоритет, так что вы можете делать что-то вроде "сложная функция-вызови-сюда или умри $!" и у вас случайно не будет "или" выплюнуть что-то с левой стороны, чего вы не хотели.

это зависит от языка, но на PHP я бы поостерегся использовать && вместо "и".Те, которые я часто использую, - это "&&" и "||".

http://us3.php.net/manual/en/language.operators.logical.php

$g = true && false; // $g will be assigned to (true && false) which is false
$h = true and false; // $h will be assigned to true

На некоторых языках && будет иметь более высокий приоритет оператора, чем AND.

Если оба работают нормально, то я бы сказал, что это действительно личные предпочтения, в большинстве случаев они компилируются в один и тот же двоичный код, подобный этому :11100010001000101001001010 [не реальный код, просто пример].

&& = два нажатия одной и той же клавиши.И = три нажатия разных клавиш.

Я не уверен, какой язык вы используете, но некоторые языки проводят различие между обычным логическим оператором и оператором короткого замыкания.Например, следующие являются обычными логическими операторами в MATLAB:

C = or(A,B);
C = A | B;  % Exactly the same as above

Однако это оператор короткого замыкания:

C = A || B;

Синтаксис короткого замыкания вычислит первый аргумент, а затем, в зависимости от значения, потенциально пропустит вычисление второго аргумента.Например, если A это уже правда, B не обязательно оценивать операцию OR, поскольку результат гарантированно будет истинным.Это полезно, когда B заменяется логической операцией, которая включает в себя какое-то дорогостоящее вычисление.

Вот такой ссылка на википедию обсуждаем операторы короткого замыкания и их синтаксис для нескольких языков.

Если нет никаких проблем с приоритетом, я бы сказал, что существуют различия в удобочитаемости.Рассмотрим следующее:

if (&x == &y && &y == &z) {
    // ..
}

#define AND &&
if (&x == &y AND &y == &z) {
    // ..
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top