ブール演算子

論理否定 NOT( ! )

論理否定( ! )の演算対象となる値は算術型でなければなりません。演算対象の値が FALSE( 0 )の場合、結果は TRUE( 1 )になり、演算対象の値が FALSE( 0 )でない場合、結果はFALSE( 0 )になります。

if(!a) Print("not 'a'");

OR( || )の論理演算

x と y の値の OR( || )論理演算。x か y の値が TRUE( null でない)の場合、式の値は TRUE( 1 )になります。その他の場合は FALSE( 0 )になります。

if(x<0 || x>=max_bars) Print("out of range");

AND( && )の論理演算

x と y の値の AND( && )論理演算。x と y の値が TRUE( null でない)の場合、式の値は TRUE( 1 )になります。その他の場合は FALSE( 0 )になります。

ブール演算の短判断

いわゆる「短判断」のスキームはブール演算に適用されます。式の結果を正確に推定することが出来る時に式の計算が終了されます。

//+------------------------------------------------------------------+
//| スクリプトプログラムを開始する関数                                          |
//+------------------------------------------------------------------+
void OnStart()
 {
//--- 短判断の 1 つ目の例
  if(func_false() && func_true())
    {
    Print("Operation &&: You will never see this expression");
    }
  else
    {
    Print("Operation &&: Result of the first expression is false, so the second wasn't calculated");
    }
//--- 短判断の 2 つ目の例
  if(!func_false() || !func_true())
    {
    Print("Operation ||: Result of the first expression is true, so the second wasn't calculated");
    }
  else
    {
    Print("Operation ||: You will never see this expression");
    }
 }
//+------------------------------------------------------------------+
//| この関数は常に false を返す                                           |
//+------------------------------------------------------------------+
bool func_false()
 {
  Print("Function func_false()");
  return(false);
 }
//+------------------------------------------------------------------+
//| この関数は常に true を返す                                            |
//+------------------------------------------------------------------+
bool func_true()
 {
  Print("Function func_true()");
  return(true);
 }

参照

優先順位のルール