Antes de nada un saludo a todos, soy nuevo en este foro y espero aprender mucho con vosotros.
Tengo una duda existencial:P : Hace poco me retaron a averiguar como se podia hacer intercambio de variables en C sin utilizar una intermedia o temporal.
La verdad es que no supe resolverlo:( .. asi que tras darme por vencido me dieron el codigo para hacerlo:
int a = 10, b = 20;
a ^= b ^= a ^= b;
printf( "a : %d, b : %dn", a, b );
A sale 20 y b 10:o
Mi pregunta es: alguine me pude destripar la linea de codigo a ^= b ^= a ^= b; ???? .. veo que eleva "a" a si mismo y lo asigna a b, lo mismo al reves y finalmente otra vez a b ... lo he hecho manualmente en papel con valores imaginarios y ni de lejos veo que se realize el intercambio...
Segin cuenta mi "retador" el swapping realmente existe, pero lo hace el compilador de manera implicita ...
Alguien me ayuda?
Mil gracias.