Skip to content

Latest commit

 

History

History
102 lines (75 loc) · 1.88 KB

chapter3.md

File metadata and controls

102 lines (75 loc) · 1.88 KB

运算符

[TOC]

@date: 2018-3-18


Lua支持下列主要的运算符:

  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 赋值运算符

还支持..#特殊运算符。其中赋值运算符仅支持=,不支持C语言的+=++等运算符。

算术运算符

+ 加法
- 减法或者负号
* 乘法
/ 除法
^ 指数
% 取模
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次方

关系运算符

< 小于
> 大于
<= 小于等于
>= 大于等于
== 等于
~= 不等于

注意:Lua 语言中“不等于”运算符的写法为:~=

由于 Lua 字符串总是会被“内化”,即相同内容的字符串只会被保存一份,因此 Lua 字符串之间的相等性比较可以简化为其内部存储地址的比较。其它语言一般需要逐个字节(或按 若干个连续字节)进行比较。

逻辑运算符

and 逻辑与
or 逻辑或
not 逻辑非

Lua 中的 andor 是不同于 c 语言的。在 c 语言中,andor 只得到两个值 1 和 0,其中 1 表示真,0 表示假。而 Lua 中 and 的执行过程是这样的:

  • a and b 如果 a 为 nil,则返回 a,否则返回 b;
  • a or b 如果 a 为 nil,则返回 b,否则返回 a。
a = 10
b = nil

print(a and b)
print(b and a)
print(a or b)
print(b or a)

输出:

nil
nil
10
10

赋值运算符

= 简单的赋值运算符,把右边操作数的值赋给左边操作数

其它运算符

..	连接两个字符串
#	一元运算符,返回字符串或表的长度。
print("hello".." world") -- 输出:hello world
print(#"hello") -- 输出:5