アマプログラマーの独り言


デスクトップは特別扱い
簡単変数の入れ替え


2001年7月29日
ある日、ある人のソースコードを眺めていたら、、、

hdc = GetDC(0)

ほよ?
ゼロ?
これで何が取得できるんだ?
どうやらデスクトップのデバイスコンテキストを取得しているみたいだ。
ほえ〜。こんなやりかたあったんだね〜。
俺は今まで、

hdc = GetDC(GetDesktopWindow())

なんて面倒なことしてたのに。
リリース時も0を指定して解放できるらしい。
もちろんデスクトップのウィンドウハンドルは0なんかではない。
でもゼロで取得できるってのは、「規定値」という意味なんだろうか。
ふむ。今度からこれを使わせてもらおう。
こういうのって、「他人の技を盗む」っていうだよね。(言わねーよ)


あともう1つ。
よく見かける変数の入れ替えはこう。

C = A
A = B
B = C

AとBを入れ替えたのだ。
ちなみにこれは、なんとなくアセンブリコードに似ている気がする。
んでこころさんというVBプログラマさんがいるのですが、その人のやり方はこれ。

A= A Xor B
B = B Xor A
A = A Xor B

な、なるほど。
確かにこれで入れ替えできたよ。
手順としては同じ3回分なので大した差はなさそうだが、そもそもCPUというのは演算が得意技なのだ。
とれくらい得意なのかというと、飯島愛はバラエティTVではなくAVに出演するのが本職である。と言えば分かって頂けるだろう。(分かるか)
つまりこのコードは、CPUの得意技を使っているので処理も速いということだ。
余計な変数を宣言する必要もない。
その分メモリも喰わない。
などといい所ばかり言っているが、ちなみにこれでは「文字列型」は入れ替えできません。