Lorsque vous essayez de faire quelque chose comme ceci:
if (true ^ 1) {
//do something
}
le compilateur raisonnablement dit que l'opérateur ^
n'est pas définie pour les types d'argument booléen et int.
Mais si vous l'utilisez comme ceci:
if (true ^ 1 > 0) {
//do something
}
le code se compile (pour Java 8 au moins) et fonctionne parfaitement. Fondamentalement, ces opérations:
false ^ -1 > 0
false ^ 1 > 0
true ^ -1 > 0
true ^ 1 > 0
Agir comme un valide logique XOR:
| ^
-----+--
F F | F
F T | T
T F | T
T T | F
Quelqu'un pourrait-il expliquer ce qui se passe sous le capot?