演算子とは
演算子とは、「+」や「-」などの、計算に使われる記号のことです。
MQLプログラミングでは、演算子と呼びます。
演算子には、たくさんの種類がありますので、詳しく解説します。
算術演算子
算術演算子 | 使用方法 |
y + x | 変数や数値を加算します。 |
y – x | 変数や数値を減算します。 |
y * x | 変数や数値を乗算します。 |
y / x | 変数や数値は除算します。 |
y % x | 変数や数値の剰余(余り)を計算します。 |
y++ | 変数に 1 を加算します。数値には使えません。 「インクリメント」と呼ばれることもあります。 |
y– | 変数に 1 を減算します。数値には使えません。 「デクリメント」と呼ばれることもあります。 |
使用例
//変数の加算
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;
注意点とサンプルプログラム
インクリメントやデクリメントは、計算式の途中で使用できません。
int a=3;
a++; // 有効な式
int b=(a++)*3; // 無効な式
代入演算子
代入演算子 | 使用方法 |
y = x | 変数 y に変数 x の値を代入します。 |
y += x | 変数 y と変数 x を加算し、その結果を変数 y に代入します。 |
y -= x | 変数 y と変数 x を減算し、その結果を変数 y に代入します。 |
y *= x | 変数 y と変数 x を乗算し、その結果を変数 y に代入します。 |
y /= x | 変数 y と変数 x を除算し、その結果を変数 y に代入します。 |
y %= x | 変数 y と変数 x の剰余(余り)を計算し、その結果を変数 y に代入します。 |
y >>= x | 変数 y の 2 進数表現を、右に変数 x ビットだけシフトし、その結果を変数 y に代入します。 |
y <<= x | 変数 y の 2 進数表現を、左に変数 x ビットだけシフトし、その結果を変数 y に代入します。 |
y &= x | 変数 y と変数 x の 2 進数表現の AND ビット演算し、その結果を変数 y に代入します。 |
y != x | 変数 y と変数 x の 2 進数表現の OR ビット演算し、その結果を変数 y に代入します。 |
y ^= x | 変数 y と変数 x の 2 進数表現の XOR ビット演算し、その結果を変数 y に代入します。 |
使用方法
//y 変数に x を加算
y += x
//y 変数から x を減算
y -= x;
//y 変数 に x を乗算
y *= x;
//y 変数を x で除算
y /= x;
//y 変数を x で除算した残り
y %= x;
//y の 2 進数表現を右に x ビットだけシフトする
y >>= x;
//yの 2 進数表現を左に x ビットだけシフトする
y <<= x;
//y とx の 2 進数表現の AND ビット演算
y &= x;
//y とx の 2 進数表現の OR ビット演算
y |= x;
//y とx の 2 進数表現の XOR ビット演算
y ^= x;
関係演算子
関係演算子 | 使用方法 |
y == x | 変数 y と変数 x が等しければ true を返します。 |
y != x | 変数 y と変数 x が等しくなければ true を返します。 |
y < x | 変数 y が変数 x より小さければ true を返します。 |
y > x | 変数 y が変数 x より大きければ true を返します。 |
y <= x | 変数 y が変数 x 以下ならば true を返します。 |
y >= x | 変数 y が変数 x 以上ならば true を返します。 |
使用例
// y と x が等しければ True
y == x;
// y と x が等しくなければ True
y != x;
// y が x より小さければ True
y < x;
// y が x より大きければ True
y > x;
// y が x 以下であれば True
y <= x;
// y が x 以上であれば True
y >= x;
論理演算子
論理演算子 | 使用方法 |
!y | 変数 y を否定します。( !false なら true 、!ture なら false) |
条件式a || 条件式b | 「OR」の論理演算をします。 条件式a または条件式b のどちらかが ture なら true を返します。 |
条件式a && 条件式b | 「AND」の論理演算をします。 条件式a が true かつ条件式b が true なら true を返します。 |
使用例
//論理否定
if( !y )
Print("not 'y'");
//ORの論理演算
if(x < 0 || x >= 1000)
Print("out of range");
//ANDの論理演算
if(x > 0 && x <= 1000)
Print("range");
ビット演算子
ビット演算子 | 使用方法 |
~y | 変数 y の 1 の補数を計算します。 |
x >> y | 変数 x の2進数表現を、y桁だけ右にシフトします。 |
x << y | 変数 x の2進数表現を、y桁だけ左にシフトします。 |
x | y | 変数 x と変数 y の2進数表現で、同じ桁の OR の論理演算をします。 |
x & y | 変数 x と変数 y の2進数表現で、同じ桁の AND の論理演算をします。 |
x ^ y | 変数 x と変数 y の2進数表現で、同じ桁の XOR の論理演算をします。 |
使用例
//1の補数
char a='a',b;
b=~a;
Print("a = ",a, " b = ",b);
// 結果:
// a = 97 b = -98
//右シフト
b=a>>1;
Print("After: a = ",a, " b = ",b);
// 結果:
// After: a = 97 b = 48
//左シフト
b=a<<1;
Print("After: a = ",a, " b = ",b);
// 結果:
// After: a = 97 b = -62
//ORの2進数論理演算
char c=a|b;
Print("a = ",a," b = ",b);
Print("a | b = ",c);
// 結果:
// a = 97 b = 98
// a | b = 99
//ANDの2進数論理演算
char c=a&b;
Print("a = ",a," b = ",b);
Print("a & b = ",c);
// 結果:
// a = 97 b = 98
// a & b = 96
//XORの2進数論理演算
char c=a^b;
Print("a = ",a," b = ",b);
Print("a ^ b = ",c);
// 結果:
// a = 97 b = 98
// a ^ b = 3
コメント