A ¦¦ B
条件Aまたは条件Bのいずれかを満たしたらという判定を行う命令です
A=TRUE B=FALSE の場合TRUEになります
A=FALSE B=FALSEの時はFALSEです
A OR B
AとBのビット演算(OR)を行います
A=&B0101 B=&B0011 なら、実行後の戻り値は&B0111になります
IFの条件として書く場合、この演算結果が0ならFALSE 0以外ならTRUEになります
A AND B
これはビット演算(AND)を行います
A=&B0101 B=&B0011の場合の戻り値は&B0001になります
十字ボタンの下を押したか判定するとき
IF BTN AND 2 THEN
という風に条件を書くことがあります
Aボタンと下ボタンを同時に押した場合のBTNには&B00010010という値が入ります
これと2(&B00000010)とでANDした結果が&B00000010になり
0ではないのでTRUEとなるわけです
2進数とか知らないとよくわからないですよね(^^;)
まだまだ初心者で殆ど分からなくて……w
じゃあ、
@LOOP
B=BUTTON(2)
IF B==16 OR B==32 THEN GOTO@START
GOTO @LOOP
と
@LOOP
B=BUTTON(2)
IF B==16 ¦¦ B==32 THEN GOTO@START
GOTO @LOOP
で両方共同じ効果なのはたまたまですか?
「たまたま」か「必然」かは使っている人の理解による部分がすべてです。
論理式とビット演算を熟知していれば両者が同じ動作をするのは必然だし、熟知していなくても「比較演算を省略せずに書く」ということを心がけているだけでも必然になります。
それが「たまたま」というのであればビット演算を理解していない状態でIF (B AND 16)==16 THEN ~をIF B AND 16 THEN ~と記述して同じ動作になるのも「たまたま」になってしまいます。