プログラムTIPS

DEMO PROGRAM ヘキサドライブでは様々な研究開発をしています。その一部を紹介。

C++:値交換の小技(2009年4月23日)

 今日はとっておきの(あまり使えない…)小技を紹介します!

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つですね ^^

 

これを見ている皆さんの中にも、将来この小技を使う日がくるかもしれませんよ!?

【免責事項】

本サイトが提供している情報に関しては、安全性等、いかなる保証もされません。 株式会社ヘキサドライブは、これらの情報をあなたが利用することによって生ずるいかなる損害に対しても一切責任を負いません。

【著作権】

本サイトが提供しているコンテンツについては、特に断りのある場合を除き、株式会社ヘキサドライブが著作権を有します。