MT4(MQL4)/MT5(MQL5)の算術演算子
足し算、引き算、掛け算、割り算の書き方です。
変数の加算 i = j + 2;
変数の減算 i = j - 3;
符号の反転 x = - x;
変数の乗算 z = 3 * x;
除算 i = j / 5;
剰余 minutes = time % 60;
変数に 1 を加算する i++;
変数に 1 を加算する ++i;
変数から 1 を減算する k--;
変数から 1 を減算する --k;
MT4→MT5に変わっても変わらず使えます。
サンプルコード
というわけで、コードを書いてみた。
void OnInit()
{
int x = 1;
Print("x = ",x," //x = 1 からスタート");
x = x + 1; //足し算
Print("x + 1 = ",x," //足し算");
x = x - 1; //引き算
Print("x - 1 = ",x," //引き算");
x = -x; //プラスマイナスを逆転させる
Print("-x = ",x," //プラスマイナスを逆転させる");
x = x*3; //掛け算
Print("x*3 = ",x," //掛け算");
x = x/3; //割り算
Print("x/3 = ",x," //割り算");
x = 3%2; //剰余(割り算の余り)
Print("3%2 = ",x," //剰余(割り算の余り)");
x = x++; //1プラス
Print("x++ = ",x," //1プラス");
x = ++x; //1プラス
Print("++x = ",x," //1プラス");
x = x--; //1マイナス
Print("x-- = ",x," //1マイナス");
x = --x; //1マイナス
Print("--x = ",x," //1マイナス");
return;
}
結果
x = 1 //x = 1 からスタート
x + 1 = 2 //足し算
x - 1 = 1 //引き算
-x = -1 //プラスマイナスを逆転させる
x*3 = -3 //掛け算
x/3 = -1 //割り算
3%2 = 1 //剰余(割り算の余り)
x++ = 1 //1プラス
++x = 2 //1プラス
x-- = 2 //1マイナス
--x = 1 //1マイナス
【補足】 x++と++x、xーーとーーxの違い
加算には「x++」「++x」、減算には「xーー」「ーーx」と、同じような書き方が2種類あります。
頭に「++」「ーー」 をつけるのと後ろに「++」「ーー」をつけるのとどう違うかというと、加算される順番が違います。
前に「++」「ーー」 がつくパターン→まずxに1が加算されたうえでyに代入される
後ろに「++」「ーー」 がつくパターン→まずxがyに代入された状態でxに1が加算される(つまり、yには加算前のxが反映される)
このあたりは、開発言語によってパターンが違うので、違う言語から入ってきた人は要注意のポイントですね。
分かりやすくサンプルで。
試しにこんな比較をしてみます。
void OnInit()
{
int x = 0;
int y = 0;
x = 3;
y = ++x;
Print("x = 3, y = ++x ");
Print("x = ",x);
Print("y = ",y);
Print("----------------------");
x = 3;
y = x++;
Print("x = 3, y = x++ ");
Print("x = ",x);
Print("y = ",y);
Print("----------------------");
x = 3;
y = --x;
Print("x = 3, y = --x ");
Print("x = ",x);
Print("y = ",y);
Print("----------------------");
x = 3;
y = x--;
Print("x = 3, y = x-- ");
Print("x = ",x);
Print("y = ",y);
return;
}
結果は↓となります。「++」が先についている方は、xにもyにも1加算されていますが、「++」が後についている方はyが加算前のままです。
マイナスも同じ現象が起きます。
x = 3, y = ++x
x = 4
y = 4
----------------------
x = 3, y = x++
x = 4
y = 3
----------------------
x = 3, y = --x
x = 2
y = 2
----------------------
x = 3, y = x--
x = 2
y = 3
【参考】MQL5公式ページ
コメント / Comments