Garbage Collection

塵も積もれば山

目次

Blog 利用状況

ニュース

コミケで受けていた通販をすべて発送しました。詳しくはこちらの記事にて
C++とかC#とか数学ネタを投下していく予定です。
それ以外の日々の四方山話を綴った日記はこちら

書庫

日記カテゴリ

[アルゴリズム]等号は続くよ どこまでも

ネタ元:同じ値であること(その2)

aとbとcがすべて等しいという条件式を作ろうとして
数学のようにa=b=cと書いてしまう人はよくいます。

昔のBASICだと、if文の外でこのように書くとaに-1が代入されたりします。
a=(b=c)と解釈され、(b=c)がtrueを意味する-1になるからです。

そして、こんな書式も生まれました。

I$=INKEY$
x=x+(I$="4")-(I$="6")
y=y+(I$="8")-(I$="2")

I$は変数名で、INKEY$とは入力された文字を取得する関数です。
つまり、4が入力されればxは-1され、6が入っていればxは+1されます。
要はキャラクターやカーソルを動かす部分です。

さらに、a=b=c=dはどうなるでしょうか。
普通に解釈されるならa=(b=(c=d))ですね。

しかし、(a=b)=(c=d)と捕えてみましょう。

a=bがtrue 、c=dがtrue で全体がtrue
a=bがtrue 、c=dがfalseで全体がfalse
a=bがfalse、c=dがtrue で全体がfalse
a=bがfalse、c=dがfalseで全体がtrue

これは、排他的論理和(XOR)の否定を意味します。

排他的論理和の演算子を用意していない言語でも、
中央の等号をnot equalの記号にすれば排他的論理和を使うことができます。

投稿日時 : 2008年10月23日 1:02

Feedback

No comments posted yet.
タイトル  
名前  
Url
コメント