Lua 运算符

运算符是一个特殊的符号,用于告诉解释器执行特定的数学或逻辑运算。

Lua提供了以下几种运算符类型:

  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 其他运算符

算术运算符

下表列出了 Lua 语言中的常用算术运算符

我们假定 A 的值为10,B 的值为 20

操作符 描述 范例
+ 加法 A + B 输出结果 30
- 减法 A - B 输出结果 -10
* 乘法 A * B 输出结果 200
/ 除法 B / A 输出结果 2
% 取余 B % A 输出结果 0
^ 乘幂 A^2 输出结果 100
- 负号 -A 输出结果 -10

范例

-- !/usr/bin/lua
-- -*- encoding:utf-8 -*-
-- filename: main.lua
-- author: 简单教程(www.twle.cn)
-- Copyright © 2015-2065 www.twle.cn. All rights reserved.

a = 21
b = 10

print(string.format("%d + %d = %d", a, b,a+b ))
print(string.format("%d - %d = %d", a, b,a-b ))
print(string.format("%d * %d = %d", a, b,a*b ))
print(string.format("%d / %d = %f", a, b, a / b ))
print(string.format("%d %% %d = %d", a, b,a % b ))
print(string.format("%d^%d   = %d", a, b,a^b ))
print(string.format("- %d    = %d", a,-a ))

以上程序执行结果为:

$ lua main.lua
21 + 10 = 31
21 - 10 = 11
21 * 10 = 210
21 / 10 = 2.100000
21 % 10 = 1
21^10   = 16679880978201
- 21    = -21

关系运算符

下表列出了 Lua 语言中的常用关系运算符

我们假定 A 的值为10,B 的值为 20:

操作符 描述 范例
== 等于
检测两个值是否相等,相等返回 true,否则返回 false
(A == B) 为 false
~= 不等于
检测两个值是否相等,相等返回 false,否则返回 true
(A ~= B) 为 true
> 大于
如果左边的值大于右边的值,返回 true,否则返回 false
(A > B) 为 false
< 小于
如果左边的值大于右边的值,返回 false,否则返回 true
(A < B) 为 true
>= 大于等于
如果左边的值大于等于右边的值,返回 true,否则返回 false
(A >= B) 返回 false
<= 小于等于
如果左边的值小于等于右边的值,返回 true,否则返回 false
(A <= B) 返回 true

范例

-- !/usr/bin/lua
-- -*- encoding:utf-8 -*-
-- filename: main.lua
-- author: 简单教程(www.twle.cn)
-- Copyright © 2015-2065 www.twle.cn. All rights reserved.

a = 21
b = 10

print(string.format("a=%d",a))
print(string.format("b=%d",b))

if( a == b )
then
   print("a 等于 b" )
else
   print("a 不等于 b" )
end

if( a ~= b )
then
   print("a 不等于 b" )
else
   print("a 等于 b" )
end

if ( a < b )
then
   print("a 小于 b" )
else
   print("a 大于等于 b" )
end

if ( a > b ) 
then
   print("a 大于 b" )
else
   print("a 小于等于 b" )
end

-- 修改 a 和 b 的值
a = 5
b = 20
if ( a <= b ) 
then
   print("a 小于等于  b" )
end

if ( b >= a ) 
then
   print("b 大于等于 a" )
end

运行以上 Lua 脚本,输出结果如下:

a=21
b=10
a 不等于 b
a 不等于 b
a 大于等于 b
a 大于 b
a 小于等于  b
b 大于等于 a

逻辑运算符

下表列出了 Lua 语言中的常用逻辑运算符

我们假设 A 的值为 true,B 的值为 false

操作符 描述 范例
and 逻辑与操作符。 若 A 为 false,则返回 A,否则返回 B (A and B) 为 false
or 逻辑或操作符。 若 A 为 true,则返回 A,否则返回 B (A or B) 为 true
not 逻辑非操作符。与逻辑运算结果相反,如果条件为 true,逻辑非为 false not(A and B) 为 true

范例

-- !/usr/bin/lua
-- -*- encoding:utf-8 -*-
-- filename: main.lua
-- author: 简单教程(www.twle.cn)
-- Copyright © 2015-2065 www.twle.cn. All rights reserved.


array = {"QQ", "Baidu",'Ali','Sina','Meituan'}

a = true
b = true

if ( a and b )
then
   print("a and b - 条件为 true" )
end

if ( a or b )
then
   print("a or b - 条件为 true" )
end

print("---------分割线---------" )

-- 修改 a 和 b 的值
a = false
b = true

if ( a and b )
then
   print("a and b - 条件为 true" )
else
   print("a and b - 条件为 false" )
end

if ( not( a and b) )
then
   print("not( a and b) - 条件为 true" )
else
   print("not( a and b) - 条件为 false" )
end

运行以上 Lua 脚本,输出结果如下

$ lua main.lua
a and b - 条件为 true
a or b - 条件为 true
---------分割线---------
a and b - 条件为 false
not( a and b) - 条件为 true

其他运算符

下表列出了 Lua 语言中的连接运算符与计算表或字符串长度的运算符

我们假设 a = "Hello ",b="www.twle.cn"

操作符 描述 范例
.. 连接两个字符串 a..b 输出结果为 "Hello www.twle.cn"
# 一元运算符,返回字符串或表的长度 #a 返回 6

范例 : 连接运算符与计算表或字符串长度的运算符的使用

-- !/usr/bin/lua
-- -*- encoding:utf-8 -*-
-- filename: main.lua
-- author: 简单教程(www.twle.cn)
-- Copyright © 2015-2065 www.twle.cn. All rights reserved.

a = "Hello "
b = "www.twle.cn"

print("连接字符串 a 和 b ", a..b )

print("b 字符串长度 ",#b )

print("字符串 Test 长度 ",#"Test" )

print("www.twle.cn 长度 ",#b )

运行以上 Lua 脚本,输出结果如下:

$ lua main.lua
连接字符串 a 和 b    Hello www.twle.cn
b 字符串长度  11
字符串 Test 长度    4
www.twle.cn 长度    11

运算符优先级

从高到低的顺序为

优先级 符号 连接方式
1 ^ 右连接
2 not 、 - (unary) 左连接
3 * 、 / 左连接
4 + 、 - 左连接
5 .. 右连接
6 < 、 > 、 <= 、 >= 、 ~= 、 == 左连接
7 and 左连接
8 or 左连接
a+i < b/2+1          =       (a+i) < ((b/2)+1)
5+x^2*8              =       5+((x^2)*8)
a < y and y <= z     =       (a < y) and (y <= z)
-x^2                 =       -(x^2)
x^y^z                =       x^(y^z)

范例 : 了解 Lua 语言运算符的优先级

-- !/usr/bin/lua
-- -*- encoding:utf-8 -*-
-- filename: main.lua
-- author: 简单教程(www.twle.cn)
-- Copyright © 2015-2065 www.twle.cn. All rights reserved.


a = 20
b = 10
c = 15
d = 5

e = (a + b) * c / d;-- ( 30 * 15 ) / 5
print("(a + b) * c / d 运算值为  :",e )

e = ((a + b) * c) / d; -- (30 * 15 ) / 5
print("((a + b) * c) / d 运算值为 :",e )

e = (a + b) * (c / d);-- (30) * (15/5)
print("(a + b) * (c / d) 运算值为 :",e )

e = a + (b * c) / d;  -- 20 + (150/5)
print("a + (b * c) / d 运算值为   :",e )

运行以上 Lua 脚本,输出结果如下

$ lua main.lua
(a + b) * c / d 运算值为  : 90.0
((a + b) * c) / d 运算值为 :   90.0
(a + b) * (c / d) 运算值为 :   90.0
a + (b * c) / d 运算值为   :   50.0
关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.