Código del Día: Intercambio de valores entre dos variables

Leonardo Herrera
Creado: 21/10/2002
Última Actualización: 21/9/2004

En BASIC existía una función que permitía intercambiar los valores entre dos variables, la función SWAP:

      10 A=10
      20 B=20
      30 SWAP A, B
      40 ? A

Por suerte, ya no tenemos que lidiar con este tipo de cosas. No obstante, tomé el ejemplo de Basic pues siempre me intrigó la función SWAP. ¿Cuál es el motivo de su existencia? No me pude tragar nunca la idea de que un keyword existiese sólo para salvar una línea de código y una variable temporal. Aunque en ese tiempo, 32 Kb RAM eran un lujo, y probablemente el tener un registro global con el propósito de ser usado como almacenamiento volátil tuviese sentido.

En C, uno tiene que, usualmente, hacer lo siguiente:

      int a = 10, b = 20, c;
      
      c = a;
      a = b;
      b = c;
      
      printf( "a : %d, b : %d\n", a, b );

Esto imprimirá a : 20, b : 10. Difícilmente esto califica como Código del Día. No obstante, la siguiente línea es nuestro código del día:

	int a = 10, b = 20;
        a ^= b ^= a ^= b;
        printf( "a : %d, b : %d\n", a, b );

¿Qué imprime? Simple: a : 20, b : 10.

Este sitio es mantenido con ePublish