Задать вопрос
@egyptForce

Как выполняется такая конструкция в языках программирования?

1. A || Б
2. A && Б

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

Представим что А и Б это, например, вызовы функций, которые что то где то там мутируют изменяют и т.д. В первом случае функция Б выполнится только в том случае если функция А после своего выполнения вернёт false. Соответственно во втором случае Б выполнится если А вернёт true. Данное утверждение справедливо для javascript.

Теперь собственно вопрос. Справедливо ли данное утверждение для других языков? Это поведение зависит от ЯП или это что-то фундаментальное и будет одинаково работатьв любом ЯП?
  • Вопрос задан
  • 150 просмотров
Подписаться 1 Средний 2 комментария
Решения вопроса 1
@kttotto
пофиг на чем писать
То, о чем Вы говорите, справедливо только для динамически типизированных языков, таких как javascript. Это там можно сделать что-то подобное
var predicate = true;
var anyMethod = function() { ... }
if(predicate && anyMethod){ ... }

В C# Вы себе такого позволить не сможете, там логические операторы можно применять только к типу bool. В случае C# anyMethod будет, наверное, delegate. В C# придется написать так
if(predicate && anyMethod != null){ ... }
Никакой матери спецификаций нет, каждый язык имеет свою спецификацию. Но такие языки как C++, С#, Java javascript считаются си-подобными языками, т.е. с точки зрения синтаксиса, являются подмножеством языка С. Поэтому все эти языки могут иметь сходства синтаксиса и может показаться что так должно быть везде. Но в других языках синтаксис операторов && и || может выглядеть по другому или его вообще может не быть и остаться только логические & и |.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
ApeCoder
@ApeCoder
В С++ можно перекрыть эти операторы и тогда аргументы будут вычисляться полностью
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы