文档日期:2019年12月7日

# 判断语句

程序的基础功能之一就是做判断。判断语句通过评估条件的真伪作出决定。MQL5中有三个条件判断语句:if - else,三目操作符,和switch - case语句。

## if语句

前面章节其实我们已经介绍过了,程序内最常用。if语句内可包含许多业务逻辑。

bool c = true;
if (c == true){Print('yes,true!');
}

上面的语句当然是真的。

说一个语法糖。就是如果if语句内只有一条语句,那连大括号都可以省了。开头给个tab即可。

bool c = true;// 换一行写
if(c == true)Print('yes,true!');// 连着写
if(c == true) Print('yes,true!');

效果是一样的。语句以分号结束。这个特性,很多编译型语言都有。每个if少写一对大括号,一个文件能省几十个,一天能省不少时间,几年下来就能大神了!!哈哈~~

int a = 2;
if(a > 1) Print('yes');
if(a < 3) Print('of course');

这样写,很省心啊。

## else操作符

if语句判断为真执行,那么其他情况呢。条件不成立的其他情况呢?我们也得处理,else字句就是做这个的。

bool c = false;if (c==true) Print('yes');
else Print('no');

看到没有,一个if,一个else,把所有的情况都考虑好了,这叫滴水不漏。复杂点儿的例子。说学生成绩60分以下输出不及格,60-80分输出及格,80-100分,优秀。

double score = 78.5;
if(score < 60)Print('不及格');
else if(score < 80)Print('及格');
elsePrint('优秀');

条件自上而下依次执行,遇到条件满足,就执行其中的语句。注意,如果判断条件写的不合适,有可能接连触发好几个哦。

## 三目运算符

为了简化if-else语句,发明了这个语法糖。

bool c = true;
string r = c == true ? 'yes' : 'no';
Print(r); // = yes

也即是?之前是判断条件,如果成立,执行:左边的句子,不成立只有:右边的句子。其实相当于:

bool c = true;
string r = '';
if(c==true){r = 'yes';
}else{r = 'no';
}
Print(r); // = yes

上述两段执行效率一样。只是三木运算符,把变量声明,条件判断,语句赋值这三项,合并到一行执行,在编程风格上简洁了不少。可以加大使用力度。

## 分支语句 switch - case

如果判断情况较多,写一堆if不方面,容易形成一大堆乱糟糟的代码。所以switch-case语句。注意,switch-case也不是最好的结构哦。在最佳实践中,很多有名的github上的高评代码库,if-else用的还是最多。为何?方便维护。switch改起来太费劲了。体验不好。而且处处得break,你不跳出,谁知道他给你执行那一段?oh sh!t。

int x = 1;
switch(x)
{case 1:Print("x is 1"); // 输出: x is 1break;case 2:Print("x is 2");break;default:Print("x is not 1 or 2");
}

switch语句要求case列举出的是其判断语句的所有可能值,当然还有个default用于处理列举不出来的值。

我们不是写航天代码的,一般控制不了全部的局面,switch用起来就不爽了。所以我个人不推荐。因为你稍不留神,就能写出这些一撸到底的代码:

int x = 1;
switch(x)
{case 1:case 2:case 3:Print("x is 1, 2 or 3"); // 输出: x is 1, 2 or 3break;default:Print("x is not 1, 2, or 3");break;
}

看见没,case=1,2,3,一次往下走,只要命中一个,都得把case里的语句走一遍,直到break!

大多数时候,if-else工作的很好的,switch-case给你一个额外的选项,多一个实现的方法。下面举例,比如是给出图表周期,分钟数,如果60分钟=1小时,240分钟=4小时,1440分钟=1天等等:

int period = _Period;
string printPeriod;switch(period)
{case 60:printPeriod = "H1";break;case 240:printPeriod = "H4";break;case 1440:printPeriod = "D1";break;default:printPeriod = "M" + period;
}

if-else也可以写,无非使用if(period==60)这样的格式依次判断即可,不具体写了。

switch语句判断范围_MQL5从入门到精通【第四章】(一)条件判断语句相关推荐

  1. sqlmap使用_sqlmap从入门到精通第四章47使用EW代理导出和导入MSSQL数据

    4.7 使用EW代理导出和导入MSSQL数据 一般的场景就是目标站点获取了webshell,然后数据库的IP地址不在目标站的本地,而且做了精准的访问控制,只允许目标站点的IP地址才能访问数据库,那么这 ...

  2. SQL语句性能调整(从入门到精通)

    SQL语句性能调整(从入门到精通)下载 /Files/tc310/SQL_XingNengTiaoZheng.doc 原文:http://www.database8.com/ORA_oracle_th ...

  3. Python基础——第四章:Python循环语句

    前言 本文是根据黑马程序员Python教程所作之笔记,目的是为了方便我本人以及广大同学们查漏补缺. 不想做笔记直接来我的频道.当然啦,自己的笔记才是最好的哦! PS:感谢黑马程序员! 教程链接:黑马程 ...

  4. 1. Vue从入门到精通(第一章 vue核心)

    Vue从入门到精通(第一章 vue核心) 第一章 Vue核心 1. Vue简介 1.1 Vue是什么? 1.2 Vue的作者以及迭代版本 1.3 Vue的特点 2. 搭建Vue开发环境 2.1 安装V ...

  5. 【Shell教程】四----输入输出,条件判断,循环

    Shell输出 echo命令 在shell中,echo 指令用于字符串的输出 命令格式: echo string 可以使用 (反斜号)''(单引号)""(双引号)包含字符串,具体功 ...

  6. Java从入门到精通 第22章 多线程

    Java从入门到精通 第22章 多线程 //单一线程的运行流程 public class Nanjing {public static void main(String[] args) {// TOD ...

  7. Java从入门到精通十四(Lambda表达式)

    Java从入门到精通十四(Lambda表达式) Lambda的引入体验 实例一(抽象方法无参无返回值) 实例二(抽线方法有参无返回值) 实例三(抽象方法带参带返回值) lambda的表达式的简化操作 ...

  8. CUDA从入门到精通(四):加深对设备的认识

    CUDA从入门到精通(四):加深对设备的认识 2013-07-23 13:17 4211人阅读 评论(2) 收藏 举报  分类: GPU(29)  版权声明:本文为卜居原创文章,未经博主允许不得转载. ...

  9. GPU 编程入门到精通(四)之 GPU 程序优化

    版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 博主由于工作当中的需要,开始学习 GPU 上面的编程,主要涉及到的是基于 GPU 的深度学习方面的知识,鉴于之前没有接触过 GP ...

最新文章

  1. [译文]ASCII art with C#
  2. [云炬创业基础笔记]第四章测试21
  3. vue内容横向循环滚动_vue文字横向滚动公告
  4. 热插拔服务器电源维修,无需关停系统即可热插拔,TE Connectivity推出滑轨电源连接器...
  5. 18个不可不知的有用潜规则
  6. 开源开放 | DeepKE发布新版本:支持低资源、长篇章、多任务的图谱抽取开源框架(浙江大学)...
  7. mysql索引(b+tree)小记
  8. 关于js数组的六种算法---水桶排序,冒泡排序,选择排序,快速排序,插入排序,希尔排序的理解。...
  9. 2020年7月4日 随机过程大作业
  10. php中的变量函数,PHP中的一些路径变量或函数
  11. C++STL中的priority——queue
  12. 最简单的视频编码器:编译(libx264,libx265,libvpx)
  13. ubuntu添加默认路由才可以访问网络
  14. 中国科学院大学2017年高等代数考研试题
  15. 预测模型| 2. Nomogram文献抄读 (2): 如何建立和解读癌症预后列线图
  16. C语言:将两个按值有序排列的非空线性链表合并为一个按值有序的线性链表算法
  17. 小程序开发费用一览表,如果你也想要用低成本制作出自己的小程序,来了解一下!
  18. 微信小程序,解析回车符
  19. JS: exec()方法
  20. 傅老师课堂:Oracle高级查询之GROUP BY

热门文章

  1. 【报告分享】2022年私域电商平台趋势报告.pdf(附下载链接)
  2. 16篇最新推荐系统论文送你(文末附打包下载链接)
  3. Label-dependent Feature Extraction in Social Networks for Node Classification
  4. ACL2021 | 信息抽取相关论文
  5. python通过代理发送邮件_使用Python通过SMTP发送邮件
  6. 使用mysql-proxy读写分离时的注意事项_mysql-proxy中Admin Plugin的使用以及读写分离的问题...
  7. php在线考试系统源代码_php实现在线考试系统
  8. 封条格式用word怎么打_汽车密封条保养膏怎么用?大师来教你正确方法
  9. Leetcode每日一题:463.island-perimeter(岛屿的周长)
  10. Java基础(五)——泛型