局部a = true print(a和false或true)为什么无论a == false还是a == true,结果始终为true?

时间:2018-11-06 03:29:05

标签: lua

为什么不正确? 我不明白。

代码:

C:\Users\Administrator>lua53
Lua 5.3.4  Copyright (C) 1994-2017 Lua.org, PUC-Rio
> local a = true print(a and false or true)
true
> local a = false print(a and false or true)
true
> local a = false print(a == true and false or true)
true
> local a = true print(a == true and false or true)
true
> local a = true print(a == false and false or true)
true
> local a = false print(a == false and false or true)
true
> local a = false print((a == false) and false or true)
true
> local a = false print(not a )
true
> local a = true print(not a )
false
>

1 个答案:

答案 0 :(得分:1)

在Lua中,andor具有lowest operator precedence,其中or低于and。因此,任何形式为X and false or true的表达式都将被解释为(X and false) or true

好吧,用false进行逻辑和运算的任何内容都是 false ;这就是逻辑性和工作原理。与true进行逻辑或运算的结果都是正确的。而且,由于or排在最后,所有这些表达方式都只是说true的过于复杂的方式。