> 条件式ではその結果が1(又はそれ以上)か0かで判定している
0 か 非0 か、です。
一番重要な違いは、
if p && q then では p が 0 なら q は評価されないってこと。
こういう仕様でなかったら && の存在意義はないに等しい。
def p(b): ? "p": return b: end
def q(b): ? "q": return b: end
if p(1) && q(1) then end ' p と q と表示
if p(0) && q(1) then end ' p のみ表示
もともと C には & はあれど && は無かったし、仕様上必要ってものでもなかった。
でも ken と dmr は、こういう仕様の論理式をあえて導入したってわけ。
and はビットごと(1 とか 2 とか 4 とか 8 とか 16 とか 32 とか 64 とか...)の論理積をとります。
1 and 1 == 1 なので、 if 1 and 1 then は then 節が実行される。
1 and 2 == 0 なので if 1 and 2 then は then 節は実行されない。
if p && q then は if p then if q then と同じ。
1 && 1 の場合 if 1 then if 1 then .. と同じなので ... が実行される。
1 && 2 の場合 if 1 then if 2 then .. と同じなので ... が実行される。