>前スレ998
>void swap(int*x,int*y){if(x!=y)*x^=*y^=*x^=*y;}

スマートでもなんでもない。これは正しくないプログラム。
ひとつの式の中で同じ変数を複数回書き換えたとき、結果は未定義になる。

常識だから下くらいは読んどけ。
http://www.st.rim.or.jp/~phinloda/cqa/cqa7.html