プロが教える店舗&オフィスのセキュリティ対策術

and演算子
A and B
でAがfalseならAとなり、そうで無ければBとなる

or演算子
A or B
でAがtrueならAとなり、そうで無ければBとなる

これを利用して

三項演算子は次:
(a > b) and a or b
だそうです。実験すると確かにそうなるのですが、どうしてでしょうか。

a,b = 1,2
print( (a > b) and a or b )
は2

a,b = 2,1
print( (a > b) and a or b )
も2

A 回答 (1件)

(a > b) and a or b


は演算子の優先順位から
( (a > b) and a ) or b
です。

X = (a > b) and a
として、
・ a>bのとき、Xはどうなるのか?そのとき X or b はどうなるのか?
・ a>bではないとき、Xはどうなるのか?そのとき X or b はどうなるのか?

を順番に考えていけばわかるのではないでしょうか?


> Aがfalseなら
> Aがtrueなら

これは、具体的にtrue または false という値、という意味ではありません。
http://milkpot.sakura.ne.jp/lua/lua52_manual_ja. …
> ブーリアン は false 値と true 値の型です。 nil と false は両方とも条件式では偽となり、 他のすべての値は真となります。
の「真」と「偽」です。

> AがtrueならAとなり、そうで無ければBとなる
とは
> Aが真(つまり、nilでもfalseでもない)ならAとなり、そうで無ければBとなる
ということです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!