【MT4学习】MQL4语言基础语法03-运算符与表达式

0
回复
6971
查看
[复制链接]

63

主题

36

回帖

1927

积分

管理员

积分
1927
来源: 2019-7-25 06:47:29 显示全部楼层 |阅读模式


表达式
一个表达式可以拥有多个字符和操作符,一个表达式可以写在几行里面。
示例:
a++; b =10; x = (y*z)/w;

注:分号(;)是表达式的结束符。

算术运算符
Sum ofvalues i = j + 2;
Difference of values i = j - 3;
Changing the operation sign x = - x;
Product of values z = 3 * x;
Division quotient i = j / 5;
Division remainder minutes = time % 60;
Adding 1 to the variable value i++;
Subtracting 1 from the variable value k--;

加减1的运算符不能被嵌套在表达式中
int a=3;
a++; // 可行的表达式
int b=(a++)*3; // 不可行的表达式


赋值运算符
注:将右侧的结果赋值给左侧的变量
将x的值赋值给y y = x;
将x的值加到y上面 y += x;
在y上面减去x的值 y -= x;
得到y的x倍的值 y *= x;
得到y除以x的值 y /= x;
取y除以x后的余数 y %= x;
y向右位移x位 y >>= x;
y向左位移x位 y <<= x;
得到逻辑AND的值 y &= x;
得到逻辑OR的值 y |= x;
得到逻辑非OR的值 y ^= x;

注:一个表达式只能有一个赋值运算符.

关系运算符
用返回0(False)或1(True)来表示两个量之间的关系。
a是否等于b a == b;
a是否不等于b a !=b;
a是否小于b a <b;
a是否大于b a >b;
a是否小于等于b a<= b;
a是否大于等于b a>= b;


真假运算符
否定运算符(!),用来表示真假的反面的结果。
// 如果a不是真的
if(!a)
Print("not 'a'");

逻辑运算符或(||)用来表示两个表达式只要有一个成立即可。
示例:
if(xl)
Print("out of range");

逻辑运算符和(&&)用来表示两个表达式要同时成立才行。
示例:
if(p!=x&& p>y)
Print("true");
n++;


位逻辑运算符
~ 运算符对操作数执行按位求补操作。
b = ~n;

>> 运算符对操作数执行向右位移操作。
x = x>> y;

<< 运算符对操作数执行向左位移操作。
x = x<< y;

一元 & 运算符返回操作数的地址
为整型和 bool 类型预定义了二进制 & 运算符。对于整型,& 计算操作数的按位“与”。对于 bool 操作数,& 计算操作数的逻辑“与”;也就是说,当且仅当两个操作数均为 true 时,其结果才为 true。
b = ((x& y) != 0);

二进制 | 运算符是为整型和 bool 类型预定义的。对于整型,| 对操作数进行按位“或”运算。对于 bool 操作数,| 对操作数进行逻辑“或”计算,也就是说,当且仅当两个操作数均为 false 时,其结果才为 false。
b = x |y;

为整型和 bool 类型预定义了 ^ 二进制操作数。对于整型,^ 计算操作数的按位“异或”。对于 bool 操作数,^ 计算操作数的逻辑“异或”;也就是说,当且仅当只有一个操作数为 true 时,其结果才为 true。
b = x ^y;

注:位逻辑运算符只作用于Integers类型

其它运算符
索引。定位在数组中i位置的值。
array= 3;
//将3负值到array数组第i位置上

使用x1,x2,...,xn 这样的方法将各种值传送到function中进行运算。
示例:
doubleSL=Ask-25*Point;
double TP=Ask+25*Point;
int ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,SL,TP,
"My comment",123,0,Red);


优先级规则
下面是从上到下的运算优先规则,优先级高的将先被运算。
()Function call From left to right
[] Array element selection
!Negation From left to right
~ Bitwise negation
- Sign changing operation
*Multiplication From left to right
/ Division
% Module division
+Addition From left to right
- Subtraction
<<Left shift From left to right
>> Right shift
< Lessthan From left to right
<= Less than or equals
> Greater than
>= Greater than or equals
==Equals From left to right
!= Not equal
&Bitwise AND operation From left to right
^Bitwise exclusive OR From left to right
|Bitwise OR operation From left to right
&&Logical AND From left to right
||Logical OR From left to right
=Assignment From right to left
+= Assignment addition
-= Assignment subtraction
*= Assignment multiplication
/= Assignment division
%= Assignment module
>>= Assignment right shift
<<= Assignment left shift
&= Assignment bitwise AND
|= Assignment bitwise OR
^= Assignment exclusive OR
, CommaFrom left to right


MT4编程课程.png

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 免费注册
关注微信