转自:http://www.runoob.com/lua/lua-miscellaneous-operator.html

Lua提供了以下几种运算符类型:

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

算术运算符

下表列出了 Lua 语言中的常用算术运算符,设定 A 的值为10,B 的值为 20:

操作符 描述 实例
+ 加法 A + B 输出结果 30
- 减法 A - B 输出结果 -10
* 乘法 A * B 输出结果 200
/ 除法 B / A w输出结果 2
% 取余 B % A 输出结果 0
^ 乘幂 A^2 输出结果 100
- 负号 -A 输出结果v -10

实例

我们可以通过以下实例来更加透彻的理解算术运算符的应用:

  1. a = 21
  2. b = 10
  3. c = a + b
  4. print("Line 1 - c 的值为 ", c )
  5. c = a - b
  6. print("Line 2 - c 的值为 ", c )
  7. c = a * b
  8. print("Line 3 - c 的值为 ", c )
  9. c = a / b
  10. print("Line 4 - c 的值为 ", c )
  11. c = a % b
  12. print("Line 5 - c 的值为 ", c )
  13. c = a^2
  14. print("Line 6 - c 的值为 ", c )
  15. c = -a
  16. print("Line 7 - c 的值为 ", c )

  

以上程序执行结果为:

  1. Line 1 - c 的值为 31
  2. Line 2 - c 的值为 11
  3. Line 3 - c 的值为 210
  4. Line 4 - c 的值为 2.1
  5. Line 5 - c 的值为 1
  6. Line 6 - c 的值为 441
  7. Line 7 - c 的值为 -21

  


关系运算符

下表列出了 Lua 语言中的常用关系运算符,设定 A 的值为10,B 的值为 20:

操作符 描述 实例
== 等于,检测两个值是否相等,相等返回 true,否则返回 false (A == B) 为 false。
~= 不等于,检测两个值是否相等,相等返回 false,否则返回 true (A ~= B) 为 true。
> 大于,如果左边的值大于右边的值,返回 true,否则返回 false (A > B) 为 false。
< 小于,如果左边的值大于右边的值,返回 false,否则返回 true (A < B) 为 true。
>= 大于等于,如果左边的值大于等于右边的值,返回 true,否则返回 false (A >= B) 返回 false。
<= 小于等于, 如果左边的值小于等于右边的值,返回 true,否则返回 false (A <= B) 返回 true。

实例

我们可以通过以下实例来更加透彻的理解关系运算符的应用:

  1. a = 21
  2. b = 10
  3.  
  4. if( a == b )
  5. then
  6. print("Line 1 - a 等于 b" )
  7. else
  8. print("Line 1 - a 不等于 b" )
  9. end
  10.  
  11. if( a ~= b )
  12. then
  13. print("Line 2 - a 不等于 b" )
  14. else
  15. print("Line 2 - a 等于 b" )
  16. end
  17.  
  18. if ( a < b )
  19. then
  20. print("Line 3 - a 小于 b" )
  21. else
  22. print("Line 3 - a 大于等于 b" )
  23. end
  24.  
  25. if ( a > b )
  26. then
  27. print("Line 4 - a 大于 b" )
  28. else
  29. print("Line 5 - a 小于等于 b" )
  30. end
  31.  
  32. -- 修改 a b 的值
  33. a = 5
  34. b = 20
  35. if ( a <= b )
  36. then
  37. print("Line 5 - a 小于等于 b" )
  38. end
  39.  
  40. if ( b >= a )
  41. then
  42. print("Line 6 - b 大于等于 a" )
  43. end

  

以上程序执行结果为:

  1. Line 1 - a 不等于 b
  2. Line 2 - a 不等于 b
  3. Line 3 - a 大于等于 b
  4. Line 4 - a 大于 b
  5. Line 5 - a 小于等于 b
  6. Line 6 - b 大于等于 a

  


逻辑运算符

下表列出了 Lua 语言中的常用逻辑运算符,设定 A 的值为 true,B 的值为 false:

操作符 描述 实例
and 逻辑与操作符。 若 A 为 false,则返回 A,否则返回 B。 (A and B) 为 false。
or 逻辑或操作符。 若 A 为 true,则返回 A,否则返回 B。 (A or B) 为 true。
not 逻辑非操作符。与逻辑运算结果相反,如果条件为 true,逻辑非为 false。 not(A and B) 为 true。

实例

我们可以通过以下实例来更加透彻的理解逻辑运算符的应用:

  1. a = true
  2. b = true
  3.  
  4. if ( a and b )
  5. then
  6. print("a and b - 条件为 true" )
  7. end
  8.  
  9. if ( a or b )
  10. then
  11. print("a or b - 条件为 true" )
  12. end
  13.  
  14. print("---------分割线---------" )
  15.  
  16. -- 修改 a b 的值
  17. a = false
  18. b = true
  19.  
  20. if ( a and b )
  21. then
  22. print("a and b - 条件为 true" )
  23. else
  24. print("a and b - 条件为 false" )
  25. end
  26.  
  27. if ( not( a and b) )
  28. then
  29. print("not( a and b) - 条件为 true" )
  30. else
  31. print("not( a and b) - 条件为 false" )
  32. end

  

以上程序执行结果为:

  1. a and b - 条件为 true
  2. a or b - 条件为 true
  3. ---------分割线---------
  4. a and b - 条件为 false
  5. not( a and b) - 条件为 true

  


其他运算符

下表列出了 Lua 语言中的连接运算符与计算表或字符串长度的运算符:

操作符 描述 实例
.. 连接两个字符串 a..b ,其中 a 为 "Hello " , b 为 "World", 输出结果为 "Hello World"。
# 一元运算符,返回字符串或表的长度。 #"Hello" 返回 5

实例

我们可以通过以下实例来更加透彻的理解连接运算符与计算表或字符串长度的运算符的应用:

  1. a = "Hello "
  2. b = "World"
  3.  
  4. print("连接字符串 a 和 b ", a..b )
  5.  
  6. print("b 字符串长度 ",#b )
  7.  
  8. print("字符串 Test 长度 ",#"Test" )
  9.  
  10. print("菜鸟教程网址长度 ",#"www.runoob.com" )

  

以上程序执行结果为:

  1. 连接字符串 a b Hello World
  2. b 字符串长度 5
  3. 字符串 Test 长度 4
  4. 菜鸟教程网址长度 14

  


运算符优先级

从高到低的顺序:

  1. ^
  2. not - (unary)
  3. * /
  4. + -
  5. ..
  6. < > <= >= ~= ==
  7. and
  8. or

  

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

  1. a+i < b/2+1 <--> (a+i) < ((b/2)+1)
  2. 5+x^2*8 <--> 5+((x^2)*8)
  3. a < y and y <= z <--> (a < y) and (y <= z)
  4. -x^2 <--> -(x^2)
  5. x^y^z <--> x^(y^z)

  

实例

我们可以通过以下实例来更加透彻的了解 Lua 语言运算符的优先级:

  1. a = 20
  2. b = 10
  3. c = 15
  4. d = 5
  5.  
  6. e = (a + b) * c / d;-- ( 30 * 15 ) / 5
  7. print("(a + b) * c / d 运算值为 :",e )
  8.  
  9. e = ((a + b) * c) / d; -- (30 * 15 ) / 5
  10. print("((a + b) * c) / d 运算值为 :",e )
  11.  
  12. e = (a + b) * (c / d);-- (30) * (15/5)
  13. print("(a + b) * (c / d) 运算值为 :",e )
  14.  
  15. e = a + (b * c) / d; -- 20 + (150/5)
  16. print("a + (b * c) / d 运算值为 :",e )

  

以上程序执行结果为:

  1. (a + b) * c / d 运算值为 : 90.0
  2. ((a + b) * c) / d 运算值为 : 90.0
  3. (a + b) * (c / d) 运算值为 : 90.0
  4. a + (b * c) / d 运算值为 : 50.0

  

lua 7 运算符的更多相关文章

  1. Lua基础---运算符

    众所周知,C,C++,python等语言都有运算符,那么Lua也不例外,因为它是C写的嘛! Lua分为主要三类运算符,分别是算术运算符,关系运算符,逻辑运算符,还有特殊运算符. 1.算术运算符有: + ...

  2. lua的运算符

    1.赋值运算符 --赋值 str="helllo".."world" print(str) a,b=10,20 print(a,b) c,d,e=1,2 pri ...

  3. Lua的五种变量类型、局部变量、全局变量、lua运算符、流程控制if语句_学习笔记02

    Lua的五种变量类型.局部变量.全局变量 .lua运算符 .流程控制if语句 Lua代码的注释方式: --当行注释 --[[    多行注释    ]]-- Lua的5种变量类型: 1.null 表示 ...

  4. Lua 学习之基础篇一<Lua 运算符>

    引言 由于刚接触lua,个人觉得接触一门新语言,就要一定要对基础的部分做一个快速了解. 于是参考网上相关资料吸收并整理下来作为笔记,模糊的时候用来回顾一下. 这些部分基本都是经过自己手动测试梳理过,没 ...

  5. Lua学习----Lua的表达式

    前言 Lua的运算符和其他语言基本类似.但也有一点点区别 1.算术运算符 Lua的算术运算符加入了指数运算符^ print(2 ^ 10) -->打印 1024. 求2的10次方 2.关系运算符 ...

  6. 【quick-cocos2d-x】Lua 面向对象(OOP)编程与元表元方法

    版权声明:本文为博主原创文章,转载请注明出处. 面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物. 早期的计算机编程是基于面向过程的方法,通过设计一个算法就可以解决当时 ...

  7. Lua 基本语法

    学习Unity的ulua热更新插件就必须先学习lua的基本语法. 我们一起来学习Lua吧O(∩_∩)O. 首先搭建Lua运行环境Lua for windows 下载地址: http://www.cr1 ...

  8. 热更新语言--lua学习笔记

    一.lua安装和编程环境搭建 lua语言可以在官网:http://luadist.org/下载安装包安装,编程IDE之前学习使用的是SciTE(https://www.cnblogs.com/movi ...

  9. 02Lua入门

    前言: 语言学起来其实相似点很多,简单整理的知识点 目录: 1.使用控制台 2.Lua基础 3.变量 4.运算符 5.控制结构 1.使用控制台 Lua脚本是包含一系列Lua命令的简单脚本(扩展名为.l ...

随机推荐

  1. TensorFlow从1到2(十一)变分自动编码器和图片自动生成

    基本概念 "变分自动编码器"(Variational Autoencoders,缩写:VAE)的概念来自Diederik P Kingma和Max Welling的论文<Au ...

  2. Bert镜像制作及flask生产环境模式启动

    一天搞定两大技术点,成就满满. 一,dockerfile FROM harbor.xxx.com.cn/3rd_part/tensorflow:1.14.0-gpu-py3-jupyter LABEL ...

  3. 06. Go 语言结构体

    Go语言结构体(struct) Go 语言通过用自定义的方式形成新的类型,结构体是类型中带有成员的复合类型.Go 语言使用结构体和结构体成员来描述真实世界的实体和实体对应的各种属性. Go 语言中的类 ...

  4. autocad2014一直显示正在检查许可

    64位CAD2014安装成功后启动时在检查许可卡住的解决方法,以下方法经本人测试,真实可行.1.下载CCcleaner.2.将CCcleaner设置成中文版,英文好的继续第三步.(设置方法:选项opt ...

  5. redhat 安装 oracle中途遇到的问题(1)

    (1)安装到68%时出现弹出框 Error in invoking target 'install' of makefile '/home/oracle/app/oracle/product/11.2 ...

  6. ROS kinetic + Realsens D435i + ORK + LINEMOD 物体识别

    1. ORK 网址:https://wg-perception.github.io/object_recognition_core/ ORK (Object Recognition Kitchen) ...

  7. selenium常用的三种等待方式

    一.强制等待 使用方法:sleep(X),等待X秒后,进行下一步操作. 第一种也是使用最简单的一种办法就是强制等待sleep(X),强制让浏览器等待X秒,不管当前操作是否完成,是否可以进行下一步操作, ...

  8. js使用“toFixed( )”保留小数点后两位

    例如: var a = 1.335; alert(a.toFixed(2)) // IE 1.34 //chorme 1.33 若a为字符串,则需要先转换为Number类型 如: n = Number ...

  9. NumPy 学习 第四篇:数组的基本操作

    在数组中,用axis(轴)表示维度,对于三维数组,axis参数的取值通常有: 当axis=None时,表示把数组展开为一维数组: 当axis=0时,表示按照行(第一维)进行计算: 当axis=1时,表 ...

  10. File 删除给定的文件或目录

    package seday03; import java.io.File; /*** 创建一个多级目录* @author xingsir*/public class MkDirsDemo { publ ...