2020-03-18 19:43:27
Решение задачи: t.me/itman_channel/35
Результат выражения 1 == 0 || a == b && b == c || a != c && (a != b || b != c) || b != c && (a != b || b != c) в Java будет true.
Почему?
Приоритеты операторов от большего к меньшему:
1. Операторы сравнения == (возвращает true, если два операнда равны) и != (true, если два операнда не равны)
2. Оператор логического && (возвращает true, если два операнда равны true)
3. Оператор логического || (возвращает true, если хотя бы один операнд равен true)
Т.е порядок выполнения операций будет следующий: (1 == 0) || ((a == b) && (b == c)) || ((a != c) && (a != b || b != c)) || ((b != c) && (a != b || b != c))
Аналитическое решение:
Воспользуемся следующими свойствами:
1. false || x будет x
2. !(a && b) это тоже самое, что и !a || !b
3. a == b && b == c тоже самое, что и a == c && b == c
4. x && x тоже самое, что и x
5. !x || x будет true
6. x && a || x && b тоже самое, что и x && (a || b)
Распишем:
1 == 0 || a == b && b == c || a != c && (a != b || b != c) || b != c && (a != b || b != c) =
false || a == b && b == c || a != c && !(a == b && b == c) || b != c && !(a == b && b == c) =
a == b && b == c || (a != c || b != c) && !(a == b && b == c) =
a == b && b == c || !(a == c && b == c) && !(a == b && b == c) =
a == b && b == c || !(a == b && b == c) && !(a == b && b == c) =
a == b && b == c || !(a == b && b == c) =
true
Численное решение:
Подставим все возможные варианты в a, b, c:
- все переменные имеют одинаковые значения
- одна из переменных отличается
- все переменные имеют разные значения
750 viewsedited 16:43