6.运算符

  1. 6.运算符
    1. 6.1 知识点
      1. 算术运算符
      2. 条件运算符
      3. 逻辑运算符
      4. 位运算符
      5. 三目运算符
    2. 6.2 知识点代码
      1. Lesson6_运算符.lua

6.运算符


6.1 知识点

算术运算符

  • Lua 的算术运算符主要有 + 加、- 减、* 乘、/ 除、% 取余、^ 幂。
  • Lua 没有自增自减 ++--
  • Lua 没有复合运算符 +=-=, /=, *=, %=
  • 能转成数字的字符串可参与算术运算;不建议依赖隐式转换,需要数字时用 tonumber转一下更清晰。
  • 字符串拼接用 ..;拼接里夹算术运算时,算术部分用括号包起来。
print("加法运算" .. (1 + 2)) -- 加法运算3
a = 1
b = 2
print("加法运算" .. (a + b)) -- 加法运算3
a = a + b
-- Lua 没有自增自减 a++,一定要手动 a = a + 1
a = a + 1
print("加法运算" .. (a + b)) -- 加法运算6
print("加法运算" .. ("123.4" + 1)) -- 加法运算124.4

print("减法运算" .. (1 - 2)) -- 减法运算-1
print("减法运算" .. ("123.4" - 1)) -- 减法运算122.4

print("乘法运算" .. (1 * 2)) -- 乘法运算2
print("乘法运算" .. ("123.4" * 2)) -- 乘法运算246.8

print("除法运算" .. (1 / 2)) -- 除法运算0.5
print("除法运算" .. ("123.4" / 2)) -- 除法运算61.7

print("取余运算" .. (1 % 2)) -- 取余运算1
print("取余运算" .. ("123.4" % 2)) -- 取余运算1.4

print("幂运算" .. (2 ^ 5)) -- 幂运算32
print("幂运算" .. ("123.4" ^ 2)) -- 幂运算15227.56

条件运算符

  • 条件(关系)运算符:><>=<===~=
print(3 > 1) -- true
print(3 < 1) -- false
print(3 >= 1) -- true
print(3 <= 1) -- false
print(3 == 1) -- false
print(3 ~= 1) -- true

逻辑运算符

  • 逻辑运算符:andornot
  • 遵循短路:前面已能决定结果时,后面不再执行。
  • and / or 返回原始值,写条件时注意。
print(true and false) -- false
print(true and true) -- true
print(false and true) -- false

print(true or false) -- true
print(false or false) -- false

print(not true) -- false

-- 注意:Lua 可以和 nil 进行逻辑运算

位运算符

  • Lua 5.1 没有原生位运算符,需自己实现或用库。
  • Lua 5.3+ 支持 &|~<<>>
  • Unity Lua 热更常见 5.1 / LuaJIT,不能默认支持 5.3+ 写法。

三目运算符

  • Lua 不支持 条件 ? A : B
  • 可用 and / or 模拟,但有坑,用前要想清楚边界值。

6.2 知识点代码

Lesson6_运算符.lua

print("**********运算符************")

print("**********知识点一 算术运算符************")
-- + - * / % ^;无 ++/--、+=/-= 等复合运算符
-- 数字字符串可参与运算,项目里建议 tonumber
-- 拼接用 ..;夹算术时用括号

print("加法运算" .. (1 + 2)) -- 加法运算3
a = 1
b = 2
print("加法运算" .. (a + b)) -- 加法运算3
a = a + b
-- Lua 没有自增自减 a++,一定要手动 a = a + 1
a = a + 1
print("加法运算" .. (a + b)) -- 加法运算6
print("加法运算" .. ("123.4" + 1)) -- 加法运算124.4

print("减法运算" .. (1 - 2)) -- 减法运算-1
print("减法运算" .. ("123.4" - 1)) -- 减法运算122.4

print("乘法运算" .. (1 * 2)) -- 乘法运算2
print("乘法运算" .. ("123.4" * 2)) -- 乘法运算246.8

print("除法运算" .. (1 / 2)) -- 除法运算0.5
print("除法运算" .. ("123.4" / 2)) -- 除法运算61.7

print("取余运算" .. (1 % 2)) -- 取余运算1
print("取余运算" .. ("123.4" % 2)) -- 取余运算1.4

print("幂运算" .. (2 ^ 5)) -- 幂运算32
print("幂运算" .. ("123.4" ^ 2)) -- 幂运算15227.56

print("**********知识点二 条件运算符************")
-- 关系运算符:> < >= <= == ~=
print(3 > 1) -- true
print(3 < 1) -- false
print(3 >= 1) -- true
print(3 <= 1) -- false
print(3 == 1) -- false
print(3 ~= 1) -- true

print("**********知识点三 逻辑运算符************")
-- and / or / not;短路;and/or 返回原始值

print(true and false) -- false
print(true and true) -- true
print(false and true) -- false

print(true or false) -- true
print(false or false) -- false

print(not true) -- false

-- 短路:前面已能决定结果,后面不执行
print(false and print("123")) -- false,没有打印 123,因为前面的 false 已经能决定结果
print(true and print("123"))  -- 会先打印 123,外层 print 打印的是后面表达式的返回结果

-- Lua 可以和 nil 进行逻辑运算

print("**********知识点四 位运算符************")
-- 5.1 无原生位运算;5.3+ 有 & | ~ << >>
-- Unity 热更常见 5.1/LuaJIT,不能默认 5.3+ 写法

print("**********知识点五 三目运算符************")
-- 无 ? : 语法;and/or 可模拟,注意边界值坑


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏