为什么a不正确?local a = true print(a and false or true) 为什么结果总是true,无论a是false还是true?

为什么a不正确? 我不理解。

代码:

C:\Users\Administrator>lua53
Lua 5.3.4  版权所有 (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
>

点赞
用户734069
用户734069

在 Lua 中,andor 具有 最低的 运算符优先级,其中 orand 优先级更低。因此,任何形式为 X and false or true 的表达式都将被解释为 (X and false) or true

嗯,任何与 false 逻辑 and 运算的表达式都是 _false_;这就是逻辑 and 如何工作的。而任何与 true 逻辑 or 运算的表达式都是 true。而且由于 or 是最后一个运算符,所有这些表达式只不过是表达 true 的过度复杂的方式。

2018-11-06 03:43:55