xor を二回掛けたら元に戻るので、ビット演算の出来る言語で、
値の交換の時の一時変数を省略する方法。
/* 通常のスワップ */
t = a; a = b; b = t;
/* t 省略 */
a ^= b ; b ^= a ; a ^= b ;
More than 5 years have passed since last update.
xor を二回掛けたら元に戻るので、ビット演算の出来る言語で、
値の交換の時の一時変数を省略する方法。
/* 通常のスワップ */
t = a; a = b; b = t;
/* t 省略 */
a ^= b ; b ^= a ; a ^= b ;
Register as a new user and use Qiita more conveniently