MQLの勉強に役立つので、CやC++の本をたまに寝っ転がって読んでいます。
Cの本を読んでいたら、if文やfor文の判定条件について、0以外は「真」として扱われるという記述がありました。
そこで、MQL4でも同じ仕様になっているのかScriptを使って調べてみました。
1.整数型の実験結果
void OnStart()
{
if(0) Print("0だよん");
else Print("elseだよん");
}
結果
elseだよん
void OnStart()
{
if(1) Print("1だよん");
else Print("elseだよん");
}
結果
1だよん
void OnStart()
{
if(-1) Print("-1だよん");
else Print("elseだよん");
}
結果
-1だよん
void OnStart()
{
if(2) Print("2だよん");
else Print("elseだよん");
}
結果
2だよん
void OnStart()
{
if(3150) Print("3150だよん");
else Print("elseだよん");
}
結果
3150だよん
以上の結果から、整数値に関し、0以外は「真」として扱われているようです。
2.浮動小数点数型の実験結果
void OnStart()
{
double a = 0.0;
if(a) Print("aだよん");
else Print("elseだよん");
}
結果
elseだよん
void OnStart()
{
double a = -1.0;
if(a) Print("aだよん");
else Print("elseだよん");
}
結果
aだよん
浮動小数点数値に関しても、0以外は「真」として扱われているようです。
3.否定( ! ) の挙動はどうなるのかな?
void OnStart()
{
int a = 0;
int b = 1;
int c = 2;
Print("!a: ", !a);
Print("!b: ", !b);
Print("!c: ", !c);
}
結果
!a: true !b: false !c: false
void OnStart()
{
int b = 0;
if(!b) Print("bだよん");
else Print("elseだよん");
}
結果
bだよん
void OnStart()
{
double b = 0.0;
if(!b) Print("bだよん");
else Print("elseだよん");
}
結果
bだよん
void OnStart()
{
int c = 2;
if(!c) Print("cだよん");
else Print("elseだよん");
}
結果
elseだよん
void OnStart()
{
double c = 2.0;
if(!c) Print("cだよん");
else Print("elseだよん");
}
結果
elseだよん
void OnStart()
{
double d = -1.0;
if(!d) Print("dだよん");
else Print("elseだよん");
}
結果
elseだよん
4.TRUE, True, true と FALSE, False, false
MQLでは、TrueとFalseに関して3種の表記があります。 いずれもMetaEditorに入力すると色が変わるので予約語になっているようですが、違いはあるのか調べてみました。
void OnStart()
{
Print("TRUE : ", TRUE);
Print("True : ", True);
Print("true : ", true);
Print("FALSE: ", FALSE);
Print("False: ", False);
Print("false: ", false);
}
結果
TRUE : 1 True : 1 true : true FALSE: 0 False: 0 false: false
上記の結果から、全て小文字のtrueとfalseだけちょっと違うように見受けられます。
これらをif文に入れた場合、どのように機能するのか調べました。
void OnStart()
{
if(true) Print("uho");
else("elseだよん");
}
結果
uho
void OnStart()
{
if(false) Print("uho");
else Print("elseだよん");
}
結果
elseだよん
この結果から見ると、TRUE, True, FALSE, Falseと同じように使って問題なさそうです。