在 Lua 中,逻辑运算符是用于连接多个条件(一般来讲就是关系表达式),最终的结果也是返回真或假,即 true 和 false。
运算符 | 说明 | 范例 |
---|---|---|
and | 逻辑与 | A and B |
or | 逻辑或 | A or B |
not | 逻辑非 | not A |
逻辑与,如果 A 和 B 的值都为真,那么结果为真,否则结果为假。如果 A 的值为假,那么不会计算 B 的值,这叫做短路。
逻辑或,只要 A 和 B 的值一个为真,那么结果为真,否则结果为假。如果 A 的值为真,那么不会计算 B 的值,这叫做短路。
逻辑非,如果原来 A 的值为真,那么结果为假。如果原来 A 的值为假,那么结果为真。
使用 and 运算符,实现逻辑与判断
#!/usr/bin/lua
print("haicoder(www.haicoder.net)\n")
local age = 40
local b = age > 30 and age < 50
local c = age > 40 and age < 50
print(string.format("b = %s, c = %s", tostring(b), tostring(c)))
程序运行后,控制台输出如下:
首先,我们定义了一个 变量 age 并赋值为 40。 接着,我们使用逻辑与运算符 and,判断变量 age 的值是否大于 30 并且小于 50,并将比较结果赋值给 b。
我们再次使用逻辑与运算符 and,判断变量 age 的值是否大于 40 并且小于 50,并将比较结果赋值给 c。
使用 or 运算符,实现逻辑或判断
#!/usr/bin/lua
print("haicoder(www.haicoder.net)\n")
local age = 40
local b = age > 30 or age < 50
local c = age > 40 or age < 30
print(string.format("b = %s, c = %s", tostring(b), tostring(c)))
程序运行后,控制台输出如下:
首先,我们定义了一个变量 age 并赋值为 40。 接着,我们使用逻辑或运算符 or,判断变量 age 的值是否大于 30 或者小于 50,并将比较结果赋值给 b。
我们再次使用逻辑或运算符 or,判断变量 age 的值是否大于 40 或者小于 30,并将比较结果赋值给 c。
使用 not 运算符,实现逻辑非判断
#!/usr/bin/lua
print("haicoder(www.haicoder.net)\n")
local a = 1
local b = -1
local c = 0
local d = false
local e = not a
local f = not b
local g = not c
local h = not d
print(string.format("e = %s, f = %s", tostring(e), tostring(f)))
print(string.format("g = %s, h = %s", tostring(g), tostring(h)))
程序运行后,控制台输出如下:
我们可以看到,在 Lua 中,所有的数字取非都是 false,只有布尔类型的 false 取非才为 true。
逻辑与,如果 A 和 B 的值都为真,那么结果为真,否则结果为假。如果 A 的值为假,那么不会计算 B 的值,这叫做短路。
逻辑或,只要 A 和 B 的值一个为真,那么结果为真,否则结果为假。如果 A 的值为真,那么不会计算 B 的值,这叫做短路。
逻辑非,如果原来 A 的值为真,那么结果为假。如果原来 A 的值为假,那么结果为真。