Lua运算符优先级

Lua运算符优先级教程

我们知道,在数学运算中,有 “先乘除后加减” 的运算规则,在我们程序语言中一样有运算符的优先级问题,来决定我们运算的顺序问题,这就是运算符的优先级。

即所谓运算符的优先级,指的是在含有多个逻辑运算符的式子中,到底应该先计算哪一个,后计算哪一个。

Lua运算符运算规则

Lua 中运算符的运算规则是,优先级高的运算符先执行,优先级低的运算符后执行,同一优先级的运算符按照从左到右的顺序进行。

需要注意的是,Lua 中大部分运算符都是从左向右执行的,Lua 运算符中,如果有小括号,即 (),则小括号的优先级最高。

Lua运算符优先级表

优先级 运算符
8 ^
7 not、#、-(一元)
6 *、 /、 %
5 +、 -
4
3 < 、>、 <=、 >= 、~=、 ==
2 and
1 or

注意:优先级值越大,表示优先级越高。

案例

运算符优先级

乘除优先级比加减高

#!/usr/bin/lua print("haicoder(www.haicoder.net)\n") local a = 1 + 2 * 3 local b = 10 - 10 / 5 print(string.format("a = %d, b = %d", a, b))

程序运行后,控制台输出如下:

17_Lua运算符优先级.png

我们首先定义了 变量 a,其值为表达式 1+2*3 的结果,因为乘法的优先级高于加法,因此这里我们先计算乘法,再计算加法,所以最终结果为 1+6=7

接着我们定义变量 b,其值为表达式 10 - 10 / 5 的结果,因为除法的优先级高于减法,因此这里我们先计算除法,再计算减法,所以最终结果为 10-2=8

小括号改变运算符优先级

小括号的运算符优先级最高

#!/usr/bin/lua print("haicoder(www.haicoder.net)\n") local a = (1 + 2) * 3 local b = (10 - 2) / 4 print(string.format("a = %d, b = %d", a, b))

程序运行后,控制台输出如下:

18_Lua运算符优先级.png

我们首先定义了变量 a,其值为表达式 (1 + 2) * 3 的结果,因为小括号的运算符优先级最高,因此这里我们先计算小括号里面的加法,再计算乘法,所以最终结果为 3*3=9

接着我们定义变量 b,其值为表达式 (10 - 2) / 4 的结果,因为小括号的运算符优先级最高,因此这里我们先计算减法,再计算除法,所以最终结果为 8 / 4 = 2

Lua运算符优先级总结

Lua 中运算符的运算规则是,优先级高的运算符先执行,优先级低的运算符后执行,同一优先级的运算符按照从左到右的顺序进行。

需要注意的是,Lua 中大部分运算符都是从左向右执行的,Lua 运算符中,如果有小括号,即 (),则小括号的优先级最高。