运算符
一)算术运算符
+ 加法
- 减法
* 乘法
/ 除法
% 取余
^ 乘幂
- 负号
print(1 + 2) -->打印 3
print(5 / 10) -->打印 0.5。 这是Lua不同于c语言的
print(5.0 / 10) -->打印 0.5。 浮点数相除的结果是浮点数
-- print(10 / 0) -->注意除数不能为0,计算的结果会出错
print(2 ^ 10) -->打印 1024。 求2的10次方
local num = 1357
print(num % 2) -->打印 1
print((num % 2) == 1) -->打印 true。 判断num是否为奇数
print((num % 5) == 0) -->打印 false。判断num是否能被5整数二)关系运算符
== 等于,检测两个值是否相等,相等返回 true,否则返回 false
~= 不等于,检测两个值是否相等,相等返回 false,否则返回 true 不想java !=,,~=
> 大于,如果左边的值大于右边的值,返回 true,否则返回 false
< 小于,如果左边的值大于右边的值,返回 false,否则返回 true
= 大于等于,如果左边的值大于等于右边的值,返回 true,否则返回 false
<= 小于等于, 如果左边的值小于等于右边的值,返回 true,否则返回 false
注意:table, userdate 和函数;判断的是引用地址的判断
a 和b 不能,因为 a和b 值虽然相同,但是都是重新开辟的内存空间;
如果使用a=b,则是引用的相同的内存空间,引用地址相等。
三)逻辑运算符
and 逻辑与操作符。(A and B) 若 A 为 假,则返回 A,否则返回 B
or 逻辑或操作符。(A or B) 若 A 为 真,则返回 A,否则返回 B
not 逻辑非操作符。与逻辑运算结果相反,如果条件为 true,逻辑非为 false。 永远只返回 true 或者 false
短路取值 原理 and 与if(a and b and c)
a and b and c
a为真,b为真,c为真 返回c
a为真,b为假,c为真 返回b
a为假 bc不管bc为什么值 返回a
一路去判断变量值是否为真,一旦遇到某个变量为假,就立刻短路返回 返回值就是 假的变量值
a or b or c
a为真,不管bc是什么值, 返回a
a为假,b为真,不管c是什么值 返回b
一路判断变量值是否为真,一但遇到某个变量为真,就立刻短路返回,返回值就是 真的变量值
四)其他运算符
.. 连接两个字符串 a..b ,其中 a 为 "Hello " , b 为 "World", 输出结果为 "Hello World"。
一元运算符,返回字符串或表的长度。 #"Hello" 返回 5
很多字符串连接 我们如果采用..这个运算符 ,性能是很低
推荐使用 table 和 table.concat() 来进行很多字符串的拼接
五)优先级

Last updated
Was this helpful?