swap(x,y)

John Tromp tromp at piring.cwi.nl
Tue Aug 22 18:21:03 AEST 1989


tg1e+ at andrew.cmu.edu (Timothy R. Gottschalk) writes:


>       To swap two variables x,y in C without using a temporary variable:

>       /* begin swap */
>       x += y;
>       y = x - y;
>       x -= y;
>       /* end swap */

>       Just curious...(this looks pretty valid) does anyone know an even
>simpler method?  I would never program this way -- it's more of a theory
>question.  I've been told that it can't be done (???).
>Tim Gottschalk
>Pgh, PA

How about

x^=y^=x^=y;

Avoids possible overflow problems and looks great in an
Obfuscated C Code entry too!

John Tromp (tromp at cwi.nl)



More information about the Comp.lang.c mailing list