新手询问:询问下lua中的连续逻辑运算是怎样判定的
lua吧
全部回复
仅看楼主
level 3
annskysex 楼主
例如:x = a and b or c中最后是怎么输出的 求中间的详细判定过程 如果是4个(abcd),或更多呢?
2013年07月10日 00点07分 1
level 14
一般而言等价于 x = a?b:c
2013年07月11日 03点07分 4
谢谢指导啊
2013年07月12日 15点07分
level 4
首先,lua在逻辑判断中,nil与false都被当成假,ture和任意值(非nil非false)被当成真。
然后看下面的解释:
and:如果左操作数为假,那就不用判断右操作数了,直接返回左操作数。如果左操作数为真,那就直接返回右操作数。
or:如果左操作数为假,直接返回右操作数,如果左操作数为真,直接返回左操作数。
最后看你的问题:
x = a and b or c
首先,or的优先比and低,所以先执行a and b,它的结果再 or c。
根据上面的解释,当a为真时,表达式等于x = b or c,当a为假时,表达式等于 x = a or c。
也即当a为真时,这时如果b为真,那么x = b,如果b为假 x = c。看到这里,应该能明白x = a and b or c 等价于x = a?b:c的前提是b不能为假。
最后,当a为假时,x = c。
2013年09月11日 10点09分 5
1