Lua学习笔记(2)–运算符

说明:Lua学习笔记的内容都是《Lua程序设计.第二版》的读书笔记,笔记中很多内容都是来自于书中

1.运算符和优先级

^
not,#,-(符号一元)
*,/,%
+,-
..
<,>,<=,>=,~=,==
and
or

1)从上到下,优先级逐渐降低,除了^(指数)和..(字符串连接)是右结合,其他的都是左结合,本人通常都是使用括号决定运算的顺序

2)算术运算符都可以用于实数

2.%(取模)的特殊说明

1)取模的定义 : a % b == a – floor(a/b)*b

2)对于正实数,x %.1 * 10e-n(n>=0)就是取得x中的小数点n位以后的数字

例如可以使用x – x%1.0e-2来取得精确到小数点两位后的结果,对于负实数则不是这样,可以先取负实数的绝对值,进行之前的         操作,在加上负号

3.关系运算符

1)与c语言不同的有不相等操作符~= 注意尽量不要比较不同类型的值

4.逻辑运算符and,or, not

1)and: 如果它的一个操作数为假就返回第一个操作数,否则返回第二个

2)or:如果它的一个操作数为真就返回第一个操作数,否则返回第二个

3)and和or都是短路求值

4)not永远只返回true 和false

5)技巧,根据 Lua 逻辑运算符的特性可以使用下面的技巧

①x = x or v –如果 x 没有赋值则给 x 一个默认值v 等价于 if not x then x = v end

②(a and b) or c 前提b不为假 则与c中的 a ? b : c  类似,例 max = (x > y) and x or y,解析

根据and和or规则有:如果(x>y)为真,(x>y) and x返回的结果是 x,而x or y 则返回的结果x;如果(x>y)为假,(x>y) and x         返回的结果是 (x>y),因为(x>y)为假(x>y) or y 则返回的结果y

发表评论?

0 条评论。

发表评论