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