変数交換

定番な変数交換のしかた。

int a=10,b=20,temp;
temp = a;
a = b;
b = temp;

ハッカーのたのしみ―本物のプログラマはいかにして問題を解くかに載っていたやり方が下の方法。なんでこれで値が交換できるのかというのが一つの練習問題で出されていた。

int a=10,b=20;
a = a^b;
b = a^b;
a = a^b;

ビット演算の方がイメージ的には速そうだけどVC++2005でそれぞれを1億回繰り返したところ、計算に要した時間は343ミリ秒と1141ミリ秒だった(デバッグモード)。XORを3回するよりも単純な代入3回の方が速いということなのだろうか。