MQL5從入門到精通【第三章】運算子
文件日期:2019年12月6日
透過運算子,可以提供數學運算,對變數賦值。
# 加法 乘法
int a = 3 + 5; // a=8
double b = 2。5 + a; // b=10。5
int ma = 5 * 3; // ma = 15
double mb = 2。5 * ma; // mb=37。5
需要特別留意的是上方加法中,整型和double型相加,結果為double型。乘法的方式也是一樣的。這個就是隱式資料轉換。
# 減法 負數
int a = 5 - 3; // a= 2
double b = 0。5 - a;// b = -1。5
int na = -5;
double nb = 3。3 - na; // nb = 8。3
與我們常識的四則運算相同規則。留意資料型別轉換,從低精度轉為高精度。還有資料範圍,預設是有符號數,可正可負。第二章我們詳細介紹過了。
# 除法 取模
說一下取模。其實就是求
整數A除以整數B的餘數
,就叫取模。當然還有商,可以直接對結果取整求得。這裡只講一下取模。
double a = 5 / 2; // =2。5
int b = 5 / 2; // = 2。這個就是求商,取整即可。
int m = 5 % 2; // = 1 這個就是取模,兩數相除的餘數
# 賦值運算子
很多時候,我們需要把計算表示式的結果,儲存並傳遞給其他函式/變數使用。
int a = 5;
a = a + 3;
Print(a); // = 8
聲明瞭餓一個變數並對其自加,並賦值給自身。也可以使用如下表達式,是等價的:
int a = 5;
a += 3;
依次類推,還可以自乘,自除,自減等等:
a -= 3; // a = a-3
a *= 3; // a = a*3
a /= 3; // a = a/3
a %= 3; // a = a%3
# 關係運算子
邏輯中常用的判斷項,大於,小於,等於等等。
a > b // 大於
a < b // 小於
a >= b // 大於等於
a <= b // 小於等於
a == b // 等於
a != b // 不等於
對於新手程式設計師,唯一需要注意的,就是一個=,是賦值;兩個==等號,是邏輯判斷,一定要記清楚了哦。否則編譯器丟擲異常的時候,又得令人懊惱。
當使用實數進行邏輯判斷時,將比較的資料進行標準化,小數點位精度統一化很關鍵。我們使用NorminalizeDouble函式對double資料進行小數點位數格式化。
double a = 1。3456789;
double b = 1。3456798;
a = NorminalizeDouble(a,4);// 保留4位小數
b = NorminalizeDouble(b,4); // 同上
if(a == b){
Print(“a is equal to b。”);
}
格式化為同一精度的實數再進行比較,就好了。
# 布林運算子
布林運算,其實簡單的就三個操作元,與 &&,或 ||,非 !。程式裡用的最多的也就是這三個。
與,A成立且B成立,C才成立; A && B = C
或,A成立或B成立,C才成立; A || B = C
非,A不成立,C才成立; !A = C
下面看一些例子:
int a = 1;
int b = 1;
int c = 3;
if(a ==b || a+b == c){ // a等於b = true, a+b ==c,=false。與運算,只要一個成立即可。
Print(‘Yes’);
}
看看非運算:
bool n = false;
if(!n){ // n不為真,成立。
Print(“yes”);
}
綜合的非運算:
int a = 1;
int b = 2;
if(!(a == b)){ // a==b不成立,則透過
Print(“yes, a is not equal tp b!‘);
}
上面的表示式其實等價於:
if(a != b){
Print(”yes, a is not equal tp b!’);
}
以上。