PHP сложное логическое выражение

0

Вчера я отправился на собеседование и получил следующий тестовый вопрос:

Каков результат этой логики:

if(TRUE && FALSE AND TRUE OR 1 || TRUE && ((TRUE || FALSE) || FALSE)) {
   PRINT "A";
} 
else print "B";

Мне пришлось оценить результат в моей голове, чего я не мог сделать.

Как бы вы это сделали?

  • 1
    почему бы вам просто не создать короткий скрипт php и проверить свою домашнюю работу?
  • 5
    Проверьте приоритет операторов PHP
Показать ещё 1 комментарий
Теги:
expression
boolean
logical-operators
evaluation

3 ответа

3
Лучший ответ

Выражение имеет середину, вне любой круглой скобки: OR 1 || , Неважно, как оцениваются левое и правое выражения, в конце они объединены с OR TRUE и результат всегда TRUE.

Печатное значение - A

  • 0
    У меня был еще один взгляд на страницу приоритета оператора php, и теперь я думаю, что, поскольку оператор && имеет наивысшую приоритетность, он будет сначала преобразован во что-то вроде этого: (TRUE) && (FALSE AND TRUE OR 1 || TRUE) && ( (TRUE || FALSE) || FALSE) и поскольку содержимое всех этих трех парантезированных выражений TRUE, поэтому результат будет верным.
  • 1
    Суть в том, что очень сложно понять это на бумаге без компьютера. Я думаю, что это очень и очень глупо задавать такой вопрос на бумаге на собеседовании. Я никогда не сталкивался с выражением, подобным этому, или с чем-то близким к этому, в реальной php-программе за десять лет работы.
Показать ещё 2 комментария
0

В результате будет напечатан 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

  • 1
    TRUE && FALSE -> TRUE -> LETS NAME IT TRUE(1) истина и ложь ложь
  • 0
    Хм, обновляю ответ /
Показать ещё 2 комментария
0

Взгляните на OR 1 Так как это на... хорошо позвоните на верхний уровень, это будет правда ИЛИ что-нибудь еще... что приводит к "истинному";)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню