Когда я читал код Java-коллеги, я наткнулся на команду if/else. В этих утверждениях несколько операторов &&
и ||
сражались друг с другом без какой-либо помощи из круглых скобок. Я упростил следующие утверждения:
if (true || true && false)
return true;
else
return false;
Как вы думаете, какой результат будет? Честно говоря, я думал, что это будет false
, но кажется, что короткое замыкание не работает, как я ожидал. В этом случае результат true
. Механизм короткого замыкания, по-видимому, рассматривает все выражение как true
, когда он находит true
, за которым следует ||
.
Но в обратном выражении, каков результат?
if (false && true || true)
return true;
else
return false;
Если следовать той же логике, она должна быть ложной. первое булево значение false
, и за ним сразу следует &&
, но результат true
, еще раз. Это имеет смысл для меня, но это кажется несовместимым с нашим предыдущим экспериментом.
Итак, моя теория:
Если мы найдем true
, за которым следует ||
, тогда это true
, независимо от того, что может произойти дальше, даже если есть длинный список других логических операторов, следующих за ним. Но если мы найдем false
, за которым следует &&
, он только замыкает следующий элемент, а не весь оператор.
И вот мой вопрос:
Я прав? Мне кажется, это немного глупо. Является true
сильнее, чем false
?