Вчера я пошел на собеседование и получил следующий тестовый вопрос:
Каков вывод этой логики:
if(TRUE && FALSE AND TRUE OR 1 || TRUE && ((TRUE || FALSE) || FALSE)) {
PRINT "A";
}
else print "B";
Я должен был оценить результат в моей голове, что я не мог сделать.
Как бы вы пошли об этом?
Выражение находится в середине, вне скобок: OR 1 ||
, Не имеет значения, как оцениваются левое и правое выражения, в конце они объединяются с OR TRUE
и результат всегда TRUE
,
Напечатанное значение A
,
Посмотрите на OR 1
Так как это на … ну, давайте назовем это верхним уровнем, это будет правда, ИЛИ что-нибудь еще … что приводит к «истине»;)
Результат распечатает A
,
Это войдет в if
Объяснение:
ПРАВДА && ЛОЖЬ И ИСТИНА ИЛИ 1 || ПРАВДА && ((ИСТИНА || ЛОЖЬ) || ЛОЖЬ)
ПРАВДА && ЛОЖЬ -> ЛОЖЬ -> НАЗЫВАЕТ ЕГО ЛОЖЬ (1)
ЛОЖЬ (1) И ИСТИНА -> ЛОЖЬ -> ПОЗВОЛЯЕТ ИМЯ ЛОЖЬ (2)
ЛОЖЬ (2) ИЛИ 1 -> ИСТИНА -> НАЗВАТЬ ЕГО ИСТИНА (3)
—— Теперь вторая часть ————
ИСТИНА -> ИСТИНА (4)
((ИСТИНА || ЛОЖЬ) -> ИСТИНА (5)
ИСТИНА (5) || ЛОЖЬ -> ИСТИНА (6)
СЕЙЧАС
объединяя два выражения:
ИСТИНА (3) || ИСТИНА (6) TRUE