Variable Swap

//
// swap some variables
// all techniques except the first are from http://cpptruths.blogspot.com/2006/04/swapping-two-integers-in-one-liner.html
//
var a:Number = 1.1;
var b:Number= 2.2;

trace(a, b);

// best, fastest, easiest to read way
var t:Number= a;
a = b;
b = t;

trace(a, b);

// not recommended slower ways:

b=a+b-(a=b);

trace(a, b);

// xor versions will only work with ints and uints
trace("nxor kills decimals:");

// easy to understand xor version
a^=b;
b^=a;
a^=b;

trace(a, b);

// one line xor version

a=(b=(a=b^a)^b)^a;

trace(a, b);

/* outputs:
1.1 2.2
2.2 1.1
1.1 2.2

xor kills decimals:
2 1
1 2
*/

The above swaps variables a and b in a few different ways. The first way (using a temp variable) is the best and fastest way… the rest of the ways are just interesting and fun.

I was coding and something reminded me that there are obscure variable swapping techniques out there… so I figured I’d google for a bit…. there are tons of examples of these online – with lots of good explanations…. I got the above from this link.

Leave a Reply

Your email address will not be published. Required fields are marked *