LAB
研究室
C言語プログラムTIPS
C++:値交換の小技
今日はとっておきの(あまり使えない…)小技を紹介します!
C言語で値を交換する際、直接交換はできないので普通は一時領域を使いますよね。
int a = 1234567; int b = 5555555; int tmp; tmp = a; a = b; b = tmp;
ところが、一時領域を使わない方法があったりするのです!
こんな感じになります。
(自分で考えたい方のために白い文字で書いています↓)
int a = 1234567; int b = 5555555; a ^= b; b ^= a; a ^= b;
これはXOR交換アルゴリズムというものです。
パッと見て何をしているのか分からないので、
普段から使うことはまず無いと思います。
ゲーム業界に入って早10年になりますが、
実際に今まで使ったことはありません。
ところが、とある方がこのアルゴリズムを実際に使ったと言っていました。
非常に限られた限定的な用途ですが、そのときは大いに役に立ったそうです!
一見するとやりようがないものでも、解決方法は意外とどこかに埋もれていたりします。
それを発見したときの喜びといったら!
プログラムの醍醐味の1つですね ^^
これを見ている皆さんの中にも、将来この小技を使う日がくるかもしれませんよ!?
CATEGORY
- 製品事例 (7)
- デモプログラム (18)
- プログラムTIPS (41)
- C言語 (5)
- C++ (6)
- C++cording (4)
- Ruby (8)
- VisualStudioの使い方 (3)
- 最適化Tips (5)
- ゲーム開発テクニック (2)
- その他 (7)