¿Alguien puede explicarme cómo funciona el intercambio XOR de dos variables sin variable temporal? void xorSwap (int *x, int *y) { if (x != y) { *x ^= *y; *y ^= *x; *x ^= *y; } } Entiendo QUÉ hace, pero ¿alguien puede explicarme la lógica de cómo funciona?