评论

收藏

if...else(特厉害的MT5/MQL5指标编程教程第九篇:if选择结构、条件运算符)

avatar 億秒 | 856 人阅读 | 0 人评论 | 2014-02-18

如果你有编程基础,那么后面这几篇都可以跳过,看看语法就行,如果没有编程基础,那么需要你很耐心地看完。

条件判断是最简单的算法,例如:如果价格跌破1.5000,买入。我们之前的小程序都是不带判断的,所有语句按由上至下的顺序一句一句执行,条件判断则可以按我们设定好的条件选择性地执行语句。

首先要了解一下关系运算符和关系表达式:

关系运算符包括:“<”(小于)、“>”(大于)、“<=”(小于等于)、“>=”(大于等于)、“==”(恒等于)、“!=”(不等于)。

要注意之前我们用过“=”,一个等于号是赋值,把等号右边的值赋给等号左边的变量,两个等号是比较两个量是否相等。

a<1(a是否小于1)、a==1(a是否等于1)、a=1;(a的值是1)

以上三个中的前两个就是关系表达式,返回一个布尔型的值,true或者false。一般关系运算都是在if结构和循环结构的括号里,不需要分号结尾,而第三个则是赋值运算。

除了关系运算,还有逻辑运算,逻辑运算符包括:“&&(AND)”(与)、“||(OR)”(或)、“!”(非)。其值也都是“真”或“假”,下一篇再介绍逻辑运算和优先级。

最简单的条件判断:

if(a < b){a = a + 1;}
// 如果a小于b,则a等于a+1,赋值的时候要从等号右往左看,比如a的值为0,那么执行了a=a+1之后,a的值为1。

看上去有点像一个函数,但是条件判断只是一个结构,没有返回值。再看三个:

// 如果a小于b,a的值增1。
if(a < b){
a = a + 1;
}
// 否则(a>b或a==b),a的值增2。
else {
a = a + 2;
}

// 如果a小于b,a的值增1。
if(a < b){
a = a + 1;
}
// 否则如果a等于b,a的值增2。
else if(a == b){
a = a + 2;
}
// 否则(a>b),a的值增3。
else{
a = a + 3;
}

if(a < b){
if(a > 0){a = a + 1;}
else {a = a + 2;}
} else {
a = a + 3;
}
// 两个else分别代表了a<=0和a>=b。

上面三个都看懂后再看下面的:

max = (a > b) ? a : b;

条件运算符“?:”是一个三目(元)运算符,要有三个操作对象。如果a>b为真,则max=a,否则max=b。上面的代码等同于:

if(a > b){max = a;} else {max = b;}

“表达式1 ? 表达式2 : 表达式3”这种形式就是一个条件表达式,如果“表达式1”的值为真,则整个表达式的值为“表达式2”,否则整个表达式的值为“表达式3”。最后试试这个是否能看懂:

max = (a > b) ? ((a > c) ? a : c) : ((b > c) ? b : c);

看懂了就可以继续往后看了。

""
还没有人打赏,支持一下