【Lua 入门基础篇(四)】运算符

在这里插入图片描述
在这里插入图片描述

一、Lua运算符

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

1. 算术运算符

A , B = 10 , 20 A, B = 10, 20 A,B=10,20

在这里插入图片描述

  • ^

在 lua 中,/ 用作除法运算,计算结果包含小数部分,// 用作整除运算,计算结果不包含小数部分:

a = 5
b = 2

print("除法运算 - a/b 的值为 ", a / b )
print("整除运算 - a//b 的值为 ", a // b )
除法运算 - a/b 的值为   2.5
整除运算 - a//b 的值为  2

2. 关系运算符

A , B = 10 , 20 A, B = 10, 20 A,B=10,20

在这里插入图片描述

  • 不等于~=

3. 逻辑运算符

A , B = t r u e , f a l s e A, B = true, false A,B=true,false

在这里插入图片描述


4. 其他运算符

在这里插入图片描述

注意: # 对 table 获取长度时,根据的是表的最大索引值。(也不确定是)

当所获取的table中存在nil时,#返回的数值是无意义的。

local tab = {}
tab[1] = 1
tab[2] = 2
tab[3] = nil
print(#tab)
--结果为2
  • 有的结果是0,我本地跑出3。所以不在讨论存在nil的table取长度情况。
local tab2 = {}
tab2[1] = nil
tab2[2] = 2
tab2[3] = 3
print(#tab2)
--结果为3

对于不存在nil的table,取值也非常玄乎!!!

所以我们采用下面的封装方法,获取table的元素个数: (不含nil)

function table.length(t)
    local i = 0
    for k, v in pairs(t) do
        i = i + 1
    end
    return i
end

5. 运算符优先级

从高到低的顺序:

^
not    - (unary)
*      /       %
+      -
..
<      >      <=     >=     ~=     ==
and
or

除了 ^ 和 .. 外所有的二元运算符都是左连接的。

-x^2                 --<-->       -(x^2)
x^y^z                --<-->       x^(y^z)

二、三目运算符:(a and {b} or {c})[1]

Lua 中没实现三目运算的操作。

C语言中:a ? b : c, a 为 true 返回 b 否则返回 c。

这里用Lua代码等价实现三目运算:

(a and {b} or {c})[1]

三、不同于C的:and 和 or

两个 number 类型的数值:

  • 进行 and 操作,返回在 and 右边那个数值。
  • 进行 or 操作,返回在or 左边那个数值。
a, b, c = 1, 2, 3
print(a and b)		--> 2
print(a or b)		--> 1
print(a and b or c) --> 2
print(a or b and c) --> 1

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ღCauchyོꦿ࿐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值