Выражение ((x^y) == x) ^ ((x^y) == y)
может быть упрощено простым способом.
(x^y) == x
тогда и только тогда, когда y == 0
, и аналогично (x^y) == y
тогда и только тогда, когда y == 0
. Таким образом, следующее использует три операции для вычисления условия:
if((x == 0) ^ (y == 0)) {
// ...
}
Это имеет смысл, потому что при использовании XOR в качестве логического оператора, результат будет истинным, если и только если один, но не оба из операндов истинны. Таким образом, это напрямую проверяет, являются ли истинными один, но не оба из x == 0
и y == 0
.