lua基本语法之基本运算符

一)算术运算符

+	加法	
-	减法	
*	乘法	
/	除法	
%	取余	
^	乘幂	
-	负号

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

print(1 < 2)    -->打印 true
print(1 == 2)   -->打印 false
print(1 ~= 2)   -->打印 true
local a, b = true, false
print(a == b)  -->打印 false

注意:table, userdate 和函数;判断的是引用地址的判断
local a = { x = 1, y = 0}
local b = { x = 1, y = 0}
if a == b then
  print("a==b")
else
  print("a~=b")
end

三)逻辑运算符

and	逻辑与操作符。(A and B) 若 A 为 假,则返回 A,否则返回 B
or	逻辑或操作符。(A or B) 若 A 为 真,则返回 A,否则返回 B
not	逻辑非操作符。与逻辑运算结果相反,如果条件为 true,逻辑非为 false。 永远只返回 true 或者 false

local c = nil
local d = 0
local e = 100

print(c and d)  -->打印 nil
print(c and e)  -->打印 nil
print(d and e)  -->打印 100

print(c or d)   -->打印 0
print(c or e)   -->打印 100
print(d or e)   -->打印 0

print(not c)    -->打印 true
print(not d)    -->打印 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() 来进行很多字符串的拼接

五)优先级

^
not   # -
*   /   %
+   -
..
< > <=  >=  ==  ~=
and
or
------------------------
local a, b = 1, 2
local x, y = 3, 4
local i = 10
local res = 0
res = a + i < b/2 + 1  -->等价于res =  (a + i) < ((b/2) + 1)
res = 5 + x^2*8        -->等价于res =  5 + ((x^2) * 8)
res = a < y and y <=x  -->等价于res =  (a < y) and (y <= x)

posted @ 2021-06-26 11:14  hochan_100  阅读(372)  评论(0编辑  收藏  举报