Lua 运算符 | 菜鸟教程


本站和网页 https://www.runoob.com/lua/lua-miscellaneous-operator.html 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

Lua 运算符 | 菜鸟教程
菜鸟教程 -- 学的不仅是技术,更是梦想!
首页
HTML
CSS
JavaScript
Vue
Bootstrap
NodeJS
Python3
Python2
Java
C++
C#
Go
SQL
Linux
jQuery
本地书签
首页
HTML
CSS
JS
本地书签
Search
Python3 教程
Python2 教程
Vue3 教程
vue2 教程
Bootstrap3 教程
Bootstrap4 教程
Bootstrap5 教程
Bootstrap2 教程
Lua 教程
Lua 教程
Lua 环境安装
Lua 基本语法
Lua 数据类型
Lua 变量
Lua 循环
Lua 流程控制
Lua 函数
Lua 运算符
Lua 字符串
Lua 数组
Lua 迭代器
Lua table(表)
Lua 模块与包
Lua 元表(Metatable)
Lua 协同程序(coroutine)
Lua 文件 I/O
Lua 错误处理
Lua 调试(Debug)
Lua 垃圾回收
Lua 面向对象
Lua 数据库访问
Lua5.3 参考手册
Lua 函数
Lua 字符串
Lua 运算符
运算符是一个特殊的符号,用于告诉解释器执行特定的数学或逻辑运算。Lua提供了以下几种运算符类型:
算术运算符
关系运算符
逻辑运算符
其他运算符
算术运算符
下表列出了 Lua 语言中的常用算术运算符,设定 A 的值为10,B 的值为 20:
操作符描述实例
+加法 A + B 输出结果 30
-减法 A - B 输出结果 -10
*乘法 A * B 输出结果 200
/除法 B / A 输出结果 2
%取余 B % A 输出结果 0
^乘幂 A^2 输出结果 100
-负号 -A 输出结果 -10
//整除运算符(>=lua5.3) 5//2 输出结果 2
实例
我们可以通过以下实例来更加透彻的理解算术运算符的应用:
实例
a = 21
b = 10
c = a + b
print("Line 1 - c 的值为 ", c )
c = a - b
print("Line 2 - c 的值为 ", c )
c = a * b
print("Line 3 - c 的值为 ", c )
c = a / b
print("Line 4 - c 的值为 ", c )
c = a % b
print("Line 5 - c 的值为 ", c )
c = a^2
print("Line 6 - c 的值为 ", c )
c = -a
print("Line 7 - c 的值为 ", c )
以上程序执行结果为:
Line 1 - c 的值为 31
Line 2 - c 的值为 11
Line 3 - c 的值为 210
Line 4 - c 的值为 2.1
Line 5 - c 的值为 1
Line 6 - c 的值为 441
Line 7 - c 的值为 -21
在 lua 中,/ 用作除法运算,计算结果包含小数部分,// 用作整除运算,计算结果不包含小数部分:
实例
a = 5
b = 2
print("除法运算 - a/b 的值为 ", a / b )
print("整除运算 - a//b 的值为 ", a // b )
以上程序执行结果为:
除法运算 - a/b 的值为 2.5
整除运算 - a//b 的值为 2
关系运算符
下表列出了 Lua 语言中的常用关系运算符,设定 A 的值为10,B 的值为 20:
操作符描述实例
== 等于,检测两个值是否相等,相等返回 true,否则返回 false (A == B) 为 false。
~= 不等于,检测两个值是否相等,不相等返回 true,否则返回 false (A ~= B) 为 true。
> 大于,如果左边的值大于右边的值,返回 true,否则返回 false (A > B) 为 false。
< 小于,如果左边的值大于右边的值,返回 false,否则返回 true (A < B) 为 true。
>= 大于等于,如果左边的值大于等于右边的值,返回 true,否则返回 false (A >= B) 返回 false。
<= 小于等于, 如果左边的值小于等于右边的值,返回 true,否则返回 false (A <= B) 返回 true。
实例
我们可以通过以下实例来更加透彻的理解关系运算符的应用:
实例
a = 21
b = 10
if&#40; a == b &#41;
then
print&#40;"Line 1 - a 等于 b" &#41;
else
print&#40;"Line 1 - a 不等于 b" &#41;
end
if&#40; a ~= b &#41;
then
print&#40;"Line 2 - a 不等于 b" &#41;
else
print&#40;"Line 2 - a 等于 b" &#41;
end
if &#40; a < b &#41;
then
print&#40;"Line 3 - a 小于 b" &#41;
else
print&#40;"Line 3 - a 大于等于 b" &#41;
end
if &#40; a > b &#41;
then
print&#40;"Line 4 - a 大于 b" &#41;
else
print&#40;"Line 5 - a 小于等于 b" &#41;
end
-- 修改 a 和 b 的值
a = 5
b = 20
if &#40; a <= b &#41;
then
print&#40;"Line 5 - a 小于等于 b" &#41;
end
if &#40; b >= a &#41;
then
print&#40;"Line 6 - b 大于等于 a" &#41;
end
以上程序执行结果为:
Line 1 - a 不等于 b
Line 2 - a 不等于 b
Line 3 - a 大于等于 b
Line 4 - a 大于 b
Line 5 - a 小于等于 b
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。
实例
我们可以通过以下实例来更加透彻的理解逻辑运算符的应用:
实例
a = true
b = true
if &#40; a and b &#41;
then
print&#40;"a and b - 条件为 true" &#41;
end
if &#40; a or b &#41;
then
print&#40;"a or b - 条件为 true" &#41;
end
print&#40;"---------分割线---------" &#41;
-- 修改 a 和 b 的值
a = false
b = true
if &#40; a and b &#41;
then
print&#40;"a and b - 条件为 true" &#41;
else
print&#40;"a and b - 条件为 false" &#41;
end
if &#40; not&#40; a and b&#41; &#41;
then
print&#40;"not( a and b) - 条件为 true" &#41;
else
print&#40;"not( a and b) - 条件为 false" &#41;
end
以上程序执行结果为:
a and b - 条件为 true
a or b - 条件为 true
---------分割线---------
a and b - 条件为 false
not( a and b) - 条件为 true
其他运算符
下表列出了 Lua 语言中的连接运算符与计算表或字符串长度的运算符:
操作符描述实例
..连接两个字符串 a..b ,其中 a 为 "Hello " , b 为 "World", 输出结果为 "Hello World"。
#一元运算符,返回字符串或表的长度。#"Hello" 返回 5
实例
我们可以通过以下实例来更加透彻的理解连接运算符与计算表或字符串长度的运算符的应用:
实例
a = "Hello "
b = "World"
print&#40;"连接字符串 a 和 b ", a..b &#41;
print&#40;"b 字符串长度 ",#b &#41;
print&#40;"字符串 Test 长度 ",#"Test" &#41;
print&#40;"菜鸟教程网址长度 ",#"www.runoob.com" &#41;
以上程序执行结果为:
连接字符串 a 和 b Hello World
b 字符串长度 5
字符串 Test 长度 4
菜鸟教程网址长度 14
运算符优先级
从高到低的顺序:
not - (unary)
* / %
+ -
..
< > <= >= ~= ==
and
or
除了 ^ 和 .. 外所有的二元运算符都是左连接的。
a+i < b/2+1 <--> (a+i) < ((b/2)+1)
5+x^2*8 <--> 5+((x^2)*8)
a < y and y <= z <--> (a < y) and (y <= z)
-x^2 <--> -(x^2)
x^y^z <--> x^(y^z)
实例
我们可以通过以下实例来更加透彻的了解 Lua 语言运算符的优先级:
实例
a = 20
b = 10
c = 15
d = 5
e = &#40;a + b&#41; * c / d;-- ( 30 * 15 ) / 5
print&#40;"(a + b) * c / d 运算值为 :",e &#41;
e = &#40;&#40;a + b&#41; * c&#41; / d; -- (30 * 15 ) / 5
print&#40;"((a + b) * c) / d 运算值为 :",e &#41;
e = &#40;a + b&#41; * &#40;c / d&#41;;-- (30) * (15/5)
print&#40;"(a + b) * (c / d) 运算值为 :",e &#41;
e = a + &#40;b * c&#41; / d; -- 20 + (150/5)
print&#40;"a + (b * c) / d 运算值为 :",e &#41;
以上程序执行结果为:
(a + b) * c / d 运算值为 : 90.0
((a + b) * c) / d 运算值为 : 90.0
(a + b) * (c / d) 运算值为 : 90.0
a + (b * c) / d 运算值为 : 50.0
Lua 函数
Lua 字符串
6 篇笔记
写笔记
#0 zuoyamin zuo***in@yeah.net 59其他运算符 —— #
在获取表的长度时,根据的是表的最大索引的值:
tab1 = {"1","2"}
print("tab1长度"..#tab1)
tab2 = {key1="1","2"}
print("tab2长度"..#tab2)
tab3 = {}
tab3[1]="1"
tab3[2]="2"
tab3[4]="4"
print("tab3长度"..#tab3)
输出:
tab1长度2
tab2长度1
tab3长度4zuoyamin zuoyamin zuo***in@yeah.net5年前 (2017-10-30)
#0 hhh 113***4718@qq.com 46下标越过 1 位以上,长度还是为 2:
tab3={}
tab3[1]="1"
tab3[2]="2"
tab3[5]="5"
print("tab3的长度",#tab3)
输出:
tab3的长度 2hhh hhh 113***4718@qq.com5年前 (2017-12-15)
#0 Miuna 524***814@qq.com 参考地址 61取长度操作符写作一元操作 #
table t 的长度被定义成一个整数下标 n 。 它满足 t[n] 不是 nil 而 t[n+1] 为 nil; 此外,如果 t[1] 为 nil ,n 就可能是零。 对于常规的数组,里面从 1 到 n 放着一些非空的值的时候, 它的长度就精确的为 n,即最后一个值的下标。 如果数组有一个“空洞” (就是说,nil 值被夹在非空值之间), 那么 #t 可能是指向任何一个是 nil 值的前一个位置的下标 (就是说,任何一个nil 值都有可能被当成数组的结束)。
tab4 = {}
tab4[1] = "1"
tab4[2] = nil
tab4[3] = "2"
tab4[4] = nil
print("tab4的长度", #tab4)
--tab4的长度 1
tab5 = {}
tab5[1] = "1"
tab5[2] = nil
tab5[3] = "2"
tab5[4] = "4"
print("tab5的长度", #tab5)
--tab5的长度 4
tab6 = {1, nil, 3}
print("tab6的长度", #tab6)
--tab6的长度 3
tab6 = {1, nil, 3, nil}
print("tab6的长度", #tab6)
--tab6的长度 1
更多内容可参考:lua table 长度解析
Miuna Miuna 524***814@qq.com 参考地址5年前 (2018-03-28)
#0 Matrixant yua***5@hotmail.com 参考地址 14若要在Lua中实现 C/C++ 中的三目运算
condition ? result1 : result2
可以简单地这样:
if condition then
return result1
else
return result2
end
但是要想使用 Lua 的逻辑运算符实现就需要一些小技巧,写法如下(具体可查看Lua 中的三目运算符)
(condition and {result1} or {result2})[1]Matrixant Matrixant yua***5@hotmail.com 参考地址5年前 (2018-04-03)
#0 Binary_Star 854***067@qq.com 12如何在 Lua 中实现三元表达式?
利用 and 和 or 的特性,若(A and B) A 为 false 返回 A,(A or B)A 为 false 返回 B,以及除 nil 外其他数据类型被当做 true。
可以非常简单的完成:
local isAppel = false
print(isAppel and "苹果" or "梨")
更多参考:Lua 中的三目运算符
Binary_Star Binary_Star 854***067@qq.com2年前 (2020-10-13)
#0 游云观星 124***7243@qq.com 7如果 and 和 or 的两个运算数是 number 会如何?
rx = 1
ry = 2
rz = 3
print(rx and ry, ry and rx) --输出2 1
print(rx or ry, ry or rx) --输出1 2
print(rx and ry or rz) --输出2
print(rx or ry and rz) --输出1
两个 number 类型的数值进行 and 操作,返回在 and 右边那个数值,进行 or 操作,返回在 or 左边那个数值,因为 and 优先级比 or 高,所以 and 和 or 混合运算会先计算 and 的返回值,在计算 or 的值。游云观星 游云观星 124***7243@qq.com1年前 (2021-09-13)
点我分享笔记
取消
分享笔记
昵称昵称 (必填)
邮箱邮箱 (必填)
引用地址引用地址
分类导航
HTML / CSSHTML 教程HTML5 教程CSS 教程CSS3 教程Bootstrap3 教程Bootstrap4 教程Bootstrap5 教程Font Awesome 教程Foundation 教程 JavaScriptJavaScript 教程HTML DOM 教程jQuery 教程AngularJS 教程AngularJS2 教程Vue.js 教程Vue3 教程React 教程TypeScript 教程jQuery UI 教程jQuery EasyUI 教程Node.js 教程AJAX 教程JSON 教程Echarts 教程Chart.js 教程Highcharts 教程Google 地图 教程 服务端Python 教程Python2.x 教程Linux 教程Docker 教程Ruby 教程Java 教程C 教程C++ 教程Perl 教程Servlet 教程JSP 教程Lua 教程Rust 教程Scala 教程Go 教程PHP 教程数据结构与算法Django 教程Zookeeper 教程设计模式正则表达式Maven 教程Verilog 教程ASP 教程AppML 教程VBScript 教程 数据库SQL 教程MySQL 教程PostgreSQL 教程SQLite 教程MongoDB 教程Redis 教程Memcached 教程 数据分析Python 教程NumPy 教程Pandas 教程Matplotlib 教程Scipy 教程R 教程Julia 教程 移动端Android 教程Swift 教程jQuery Mobile 教程ionic 教程Kotlin 教程 XML 教程XML 教程DTD 教程XML DOM 教程XSLT 教程XPath 教程XQuery 教程XLink 教程XPointer 教程XML Schema 教程XSL-FO 教程SVG 教程 ASP.NETASP.NET 教程C# 教程Web Pages 教程Razor 教程MVC 教程Web Forms 教程 Web ServiceWeb Service 教程WSDL 教程SOAP 教程RSS 教程RDF 教程 开发工具Eclipse 教程Git 教程Svn 教程Markdown 教程 网站建设HTTP 教程网站建设指南浏览器信息网站主机教程TCP/IP 教程W3C 教程网站品质
Advertisement
反馈/建议
在线实例
&middot;HTML 实例
&middot;CSS 实例
&middot;JavaScript 实例
&middot;Ajax 实例
&middot;jQuery 实例
&middot;XML 实例
&middot;Java 实例
字符集&工具
&middot; HTML 字符集设置
&middot; HTML ASCII 字符集
&middot; JS 混淆/加密
&middot; PNG/JPEG 图片压缩
&middot; HTML 拾色器
&middot; JSON 格式化工具
&middot; 随机数生成器
最新更新
&middot;
Go fmt.Printf ...
&middot;
CSS backdrop-filte
&middot;
使用 JS 的 down...
&middot;
Navigator produ...
&middot;
Navigator onLin...
&middot;
Navigator langu...
&middot;
Navigator geolo...
站点信息
&middot;
意见反馈
&middot;
免责声明
&middot;
关于我们
&middot;
文章归档
关注微信
Copyright 2013-2022 菜鸟教程
runoob.com All Rights Reserved. 备案号:闽ICP备15012807号-1
微信关注