Когда я читал код 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?