or and против || &&

Статус
В этой теме нельзя размещать новые ответы.

nigirma

Новичок
Как правильней писать:
if (($a > $b) or ($c < $b))
// или
if (($a > $b) || ($c < $b))

и по аналогии:
if (($a > $b) and ($c < $b))
// или
if (($a > $b) && ($c < $b))

Что больше используют? Что лучше для "адаптации" (привыкания) с другими ЯП?
Лично мне or and привычней читать, но вот в приложениях больше замечаю что используется || &&
 

craz

Нестандартное звание
В организации потихоньку создаем единые правила написания кода. Тут пока думаем.
Хотелось бы узнать как у вас?
как у всех))
ну короче правильно так как удобно мне удобнее писать вместо и && получается вместо или тоже надо писать ||
 

Духовность™

Продвинутый новичок
про приоритет данных операций что-нибудь слышали? если да, то подобных вопросов возникать не должно.
 

N.N.

Новичок
Правильно должно быть не так, как удобно, а так, как этого требует реализация конкретного примера.
Я хочу сказать, что отличие двух вариантов операторов есть и состоит оно в разных приоритетах выполнения.
У && приоритет выше, чем у and. Соответственно, какой именно из операторов использовать, становится видно из самой задачи, которую надо решить.
Вот посмотрите, многое станет понятно )
Вырезка примера из мануала: Пример #1 Объяснение логических операторов (http://docs.php.net/manual/ru/language.operators.logical.php)
PHP:
// --------------------
// foo() никогда не буде вызвана, так как эти операторы являются шунтирующими (short-circuit)

$a = (false && foo());
$b = (true  || foo());
...

// --------------------
// "||" имеет больший приоритет, чем "or"

// Результат выражения (false || true) присваивается переменной $e
// Действует как: ($e = (false || true))
$e = false || true;

// Константа false присваивается $f, а затем значение true игнорируется
// Действует как: (($f = false) or true)
$f = false or true;

var_dump($e, $f);

// --------------------
// "&&" имеет больший приоритет, чем "and"

// Результат выражения (true && false) присваивается переменной $g
// Действует как: ($g = (true && false))
$g = true && false;

// Константа true присваивается $h, а затем значение false игнорируется
// Действует как: (($h = true) and false)
$h = true and false;

var_dump($g, $h);
Видите разницу?
 

craz

Нестандартное звание
короче вы щас вызвали когнетивный диссонанс у людей которые пользовались and / or и они уже переписывают свои приложения
 

Духовность™

Продвинутый новичок
нет никакого диссонанса. всегда в случае сравнения надо использовать операторы || и &&, если для этого не требуются or и and. Это поможет избежать ошибок, пример который привел N.N..
 

craz

Нестандартное звание
нет никакого диссонанса. всегда в случае сравнения надо использовать операторы || и &&, если для этого не требуются or и and. Это поможет избежать ошибок, пример который привел N.N..
ну я и говорю те кто этого не знал уже переписывают
 
  • Like
Реакции: N.N.

Вурдалак

Продвинутый новичок
OMG, да пишите как хотите, только в случаях с оператором присваивания и тернарным нужно не забывать ставить скобки. Кому как удобно, пусть так и пишет.
 

phprus

Moderator
Команда форума
Вурдалак
Лучше не использовать подобные формы перехода на личности.

N.N.
Боксом по переписке на этом форуме не занимаются. Это в контексте твоей угрозы об обучении разговаривать.
А кроме того, модераторы видят все удаленные сообщения и уровень хамства в них зашкаливает.

P.S. Тема закрыта за бессмысленные споры между участниками.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху