论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
PLC布局化文本(ST)——AND_THEN & OR_ELSE ...
PLC布局化文本(ST)——AND_THEN & OR_ELSE
美丽的神话
论坛元老
|
2024-9-11 13:04:30
|
显示全部楼层
|
阅读模式
楼主
主题
1869
|
帖子
1869
|
积分
5607
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
PLC Structured Text Object Oriented Programming
PLC布局化文本(ST)——AND_THEN & OR_ELSE
特殊机制
运算符AND_THEN和OR_ELSE与我们常用的AND和OR功能相同却有点区别。
IF FALSE AND calculate() THEN
Auto.Run();
END_IF
复制代码
假如IF前一个条件一直为FALSE那么后一个条件calculate()仍然会继承实验,得出结果。固然Auto.Run()不会继承实验。
IF TRUE OR calculate() THEN
Auto.Run();
END_IF
复制代码
假如IF前一个条件一直为TRUE那么后一个条件calculate()仍然会继承实验,返回BOOL值得出结果。
上述这两种情况,对于IF条件语句使用运算符AND来说,只要有一个条件是FALSE整条判断语句结果就为FALSE,同样对于使用运算符OR来说,只要有一个条件为TRUE整条判断语句结果就为TRUE。后一个条件就没必要继承运行判断直接实验下一个语句即可。
把上面程序中的运算符AND和OR替换成AND_THEN和OR_ELSE。
IF FALSE AND_THEN calculate() THEN
Auto.Run();
END_IF
复制代码
由于IF条件语句第一个条件是FALSE以是使用AND_THEN运算符后calculate()方法/函数/程序并不会进入实验,也就是说当检测到第一个条件为FALSE时条件判断提前返回结果FALSE。
IF TRUE OR_ELSE calculate() THEN
Auto.Run();
END_IF
复制代码
同理,条件语句使用的是OR_ELSE运算符,结果提前返回TRUE,而且calculate()不参与实验。
怎样使用
既然我们已经了解运算符AND_THEN & OR_ELSE的特殊机制。是否可以用来简化代码?提高计算机运行效率?
简化代码
IF bCondition1 THEN // 条件1
IF bCondition2 THEN // 条件2
IF bCondition3 THEN // 条件3
Auto.Run();
END_IF
END_IF
END_IF
复制代码
使用AND
IF bCondition1 AND bCondition2 AND bCondition3 THEN
Auto.Run();
END_IF
复制代码
使用AND_THEN
IF bCondition1 AND_THEN bCondition2 AND_THEN bCondition3 THEN
Auto.Run();
END_IF
复制代码
多个IF条件嵌套使用,代码布局复杂,使用AND_THEN简化之后在同一行形成一个IF条件,代码清晰简洁。
IF ptrMachine <> 0 THEN // ptrMachine 是一个指针
IF NOT ptrMachine^.IsAutoRun() THEN
Auto.Run();
END_IF
END_IF
复制代码
不能
使用AND运算符简化
// 这是一个错误示例
IF ptrMachine <> 0 AND NOT ptrMachine^.IsAutoRun() THEN
Auto.Run();
END_IF
复制代码
无论这个表达式ptrMachine 0结果是什么,后面的表达式ptrMachine^.IsAutoRun()都会被实验,如果指针是空引用则会导致指针空引用非常。
IF ptrMachine <> 0 AND_THEN NOT ptrMachine^.IsAutoRun() THEN
Auto.Run();
END_IF
复制代码
如果指针(ptrMachine)为空(null),IF的第一个条件ptrMachine 0不成立返回FALSE判断直接退出
不实验
ptrMachine^.IsAutoRun()表达式。如果指针不为空,两个判断条件均实验,而且不会出现空指针非常。
总结
合理使用OR、AND、OR_ELSE、AND_THEN运算符,而且OR和OR_ELSE并
不是
可以随意替换使用的,同理AND和AND_THEN也是如此。一切要以自身程序需求来判断使用合适的运算符。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
美丽的神话
论坛元老
这个人很懒什么都没写!
楼主热帖
Python 实现贪心算法
GIS前沿技术
Spark快速上手(3)Spark核心编程-RDD转 ...
Kubernetes——Pod对象的声明周期(Pod ...
Python自动操作 GUI 神器——PyAutoGUI ...
哈工大软件构造Lab3(2022)
什么是超融合数据中心网络? ...
java中Files.mismatch方法具有什么功能 ...
彻底理解 volatile 关键字及应用场景, ...
微服务介绍
标签云
渠道
国产数据库
集成商
AI
运维
CIO
存储
服务器
快速回复
返回顶部
返回列表