立石です。

Date: Thu, 23 Sep 1999 22:50:08 +0900
From: Kazuhiro Yoshida <moriq / ma2.seikyou.ne.jp>
moriq> 次の結果は妙ですよね.
moriq> ruby -e 'a=false;a=true if true or true and false;p a'
moriq> false

and,orは予約語になっていて優先度は同じようです。
(parse.yとマニュアルより)
よって、and,orに対する計算は左から順に行なわれることに
なって、a = true という代入は行なわれないわけです。

moriq> ruby -e 'p true or true and false'
moriq> true

p true or true and false は
(p true) or true and false と解釈されます。

よって表示されるのは"true"ですが、式全体の値は

(p true or true and false) = nil or true and false
                           = true and false
                           = false
となると思います。

			Takaaki Tateishi <ttate / jaist.ac.jp>