Просмотр поста

.
AlkatraZ
╭∩╮ (`-`) ╭∩╮
Приведу простой пример неочевидных и выносящих мозг решений на примере домашнего задания.
Кто посетил урок и получил файл ДЗ, там в 7-м задании говорилось про оператор XOR,
а в 8-м предлагалась задачка:
$x = 10;
$y = 15;
Необходимо дописать несколько операций так, чтобы в итоге значения переменных
поменялись местами. При этом, использовать другие переменные запрещается.
===
Решить задачу можно 2-мя кратчайшими путями.

Первый очевидный путь - трюк с массивом, решается одной строкой:
list($y, $x) = array($x, $y);


Второй путь как раз использует выражение XOR из 7-го задания, точнее его краткий вариант написания:
$y ^= ($x ^= $y);
$x ^= $y;

Вот этот второй путь как раз мне категорически не нравится, ибо абсолютно неочевиден и выносит мозг тех, кто будет смотреть код. Без комментария хрен поймешь, что же делают эти 2 строчки.
Посему, подобные выражения применять нежелательно, тем более, что они не дают никакого выйгрыша в скорости.