イナズマの日記

こんにちは。

整数型変数の中身の交換

多分競プロerでは常識なんだろうけど。 でも自分は初めてしったのでメモしておきます。

例えば

int a = 15;
int b = 32;

みたいな変数があって変数の中身を交換したいと。つまりaを32、bを15にするということです。
このようなとき、自分は今までこのような処理を行っていました。

int a = 15;
int b = 32;
int tmp = a;
a = b;
b = tmp;

しかしXORを用いるとこのような処理によっても同じ操作ができます。

int a = 15;
int b = 32;
a ^= b;
b ^= a;
a ^= b;

これでゴミ変数を作らなくて済みます。

が、可読性の観点からゴミ変数作ったほうがいい気がします……。しかも実行速度も早くなるわけではなさそうです………。 結局は個人の好みでしょうか。