Lua中and 和 or是逻辑运算符,对他们的操作数而言false和nil为false,其他均为true

Lua官方手册中and 和 or的解释:

The conjunction operatorandreturns its first argument if this value isfalseornil; otherwise,andreturns its second argument.

如果第一个参数为false的话,and返回第一个参数,否则返回第二个参数

The disjunction operatororreturns its first argument if this value is different fromnilandfalse; otherwise,orreturns its second argument

如果第一个参数为true的话,or返回第一个参数,否则返回第二个参数

按照官方这种解释来记这两个运算符太恶心了,对于基础语法要有高标准掌握程度,这样读写代码才快速准确:

1.瞬间算出结果

2.相隔较长时间不会忘记混淆

按照官方这种记法恶心死你,根本达不到效果,我按照以下的方式记忆:

和C语音的&&,||相比,Lua的and or使用结果一样:即a && b等价于a and b,a || b等价于a or b.

来看Lua的a and b:如果a 为 true,表达式的值取决于b; a or b:如果a为false,表达式的值取决于b

a and b和a or b的本质区别是当a在什么情况下,表达式的值不需要考虑a, 只取决于b, 这两个运算符应该是从这个角度来设计的;

因此在记忆时,应该想到"a为何值时,只取决于b"这个模板.方式如下:

a and b:a为true时,返回b,否则返回a.

a or b:a为false时,返回b,否则返回a.

另外C语言的三目运算符a ? b : c等价于Lua中的a and b or c

最后上个输出截图:

print("----------------------------------------")

print("true and true = " .. tostring(true and true))

print("true and false = " .. tostring(true and false))

print("false and true = " .. tostring(false and true))

print("false and false = " .. tostring(false and false))

print("----------------------------------------")

print("true or true = " .. tostring(true or true))

print("true or false = " .. tostring(true or false))

print("false or true = " .. tostring(false or true))

print("false or false = " .. tostring(false or false))

print("----------------------------------------")

print("true and false or true = " .. tostring(true and 1 or 2))

print("false and false or true = " .. tostring(false and 1 or 2))

c语言中and和or的用法区别,Lua中and和or的用法和记忆方法相关推荐

  1. c语言 define和int,C语言中define与const的用法区别分析

    其实这个是困惑了我好久的问题,没想到在上机课做到的题里找到了答案--我的困惑是:#define与const到底有什么区别. 题目:  代码如下 复制代码 #define N 2 #define M N ...

  2. c语言常量的正确表示const,C语言中的const和free用法详解

    注意:C语言中的const和C++中的const是有区别的,而且在使用VS编译测试的时候.如果是C的话,请一定要建立一个后缀为C的文件,不要是CPP的文件.因为,两个编译器会有差别的. 一.C语言中的 ...

  3. c语言中if和goto的用法,C语言中if和goto的用法.doc

    C语言中if和goto的用法 C语言中,if是一个条件语句,用法??if(条件表达式) 语句如果满足括号里面表达式,表示逻辑为真于是执行后面的语句,否则不执行(表达式为真则此表达式的值不为0,为假则为 ...

  4. C++语言中std::array的神奇用法总结,你需要知道!

    摘要:在这篇文章里,将从各个角度介绍下std::array的用法,希望能带来一些启发. td::array是在C++11标准中增加的STL容器,它的设计目的是提供与原生数组类似的功能与性能.也正因此, ...

  5. go语言中error的分类与用法

    go语言中error的分类与用法 原文引用:极客时间中的课程<Go error处理最佳实践> 前言:本文要讨论的就是go中error的基本原理/类型,以及最重要的几个问题: go代码开发中 ...

  6. 在c语言中while与do-while,C语言中while /do while语句用法

    C语言中while /do while语句用法 C语言while语句的用法 while语句的一般形式为:while(表达式)语句 其中表达式是循环条件,语句为循环体. while语句的语义是:计算表达 ...

  7. c语言while break用法举例,c语言中continue和break的用法

    目前,随着计算机在人们生活和工作中的普及,其教学研究地位也在逐渐提升.C语言是一种计算机程序设计语言,其具有高级语言和汇编语言的特点.下面小编就跟你们详细介绍下c语言中continue和break的用 ...

  8. c语言do while语句用法6,C语言中while /do while语句用法

    摘要 腾兴网为您分享:C语言中while /do while语句用法,仙乐,同程旅游,天猫超市,闪送等软件知识,以及上网本系统,酷我音乐mac,美版微信,地基承载力计算,云解压,猫咪咖啡馆游戏,智课雅 ...

  9. c语言gets和getchar区别,C语言中 gets 和 getchar 有什么区别

    C语言中 gets 和 getchar 有什么区别 发布时间:2020-07-22 09:14:29 来源:亿速云 阅读:81 作者:Leah 这期内容当中小编将会给大家带来有关C语言中 gets 和 ...

最新文章

  1. iOS实现动态区域裁剪图片
  2. arm remapping控制输入_解析机器视觉中运动控制卡与PLC的区别
  3. 青龙面板修改端口教程避开5700更安全
  4. 如何获取不同网站的favicon默认图标
  5. Spring MVC + Thymeleaf
  6. Spring+SpringMVC+Mybatis框架整合流程
  7. 特斯拉宣布将在欧洲建设第二座超级工厂
  8. PetShop之ASP.NET缓存(转载)
  9. C++纯虚函数与抽象类
  10. Graphviz下载 使用
  11. ORACLE坏块检查
  12. 使用 systemd 定时器调度任务
  13. 程序员面试——C++工程师面试大全第一部分
  14. elcipse 编译cocos2d-x android
  15. paip.myeclipse7 java webservice 最佳实践o228
  16. 手把手教你win10下lex与yacc的安装
  17. 【Unity3D 灵巧小知识点】☀️ | Unity脚本生命周期
  18. 颜色代码表(#号开头)
  19. IOS开发大神装逼神器
  20. PX4使用FPV DShot电调

热门文章

  1. 算法补天系列之——暴力递归
  2. 从0到1打造自己的VOIP网络电话系统(基于FreePBX)
  3. 一篇文章让你对sysfs文件及属性了解透彻【Linux内核】
  4. 苹果Xsan 2.2误删除视频文件后按原始目录名恢复文件的方案和思路
  5. 5分钟讲解直流线性稳压降压电源基本原理
  6. 提高计算机性能的主流方法,9种提高计算机性能的方法
  7. Python爬虫 | 爬取全书网小说斗罗大陆
  8. 虚拟偶像的歌声原来是这样生成的!
  9. 利用Python模拟登录pastebin.com
  10. 【蓝桥杯2018Java】测试次数/耐摔指数