サンプルコード 一覧へ戻る

MQL5サンプルコード

【MT5(MQL5)サンプルコード】算術演算子(足し算、引き算、掛け算、割り算)

スポンサーリンク

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

コメント

タイトルとURLをコピーしました