3.4.9 論理演算子

論理演算子は,論理AND演算(&&),および論理OR演算(||)を実行します。

<この項の構成>
(1) 形式
(2) 説明
(3) 記述例

(1) 形式

論理AND演算式

式1 && 式2

論理OR演算式

式1 || 式2

(2) 説明

論理演算子は通常の演算変換は実行しません。その代わりに,0と一致するかどうかという観点で各オペランドを評価します。論理演算の結果はtrueまたはfalseです。結果の型はboolです。

論理演算子の説明を次に示します。

演算子説明
&&両方のオペランドがtrueの場合,結果はtrueになります。どちらか一方のオペランドがfalseの場合,結果はfalseになります。論理AND演算の初めのオペランドがfalseの場合,二つ目のオペランドは評価されません。
||両方のオペランドの評価がfalseの場合,結果はfalseになります。どちらか一方のオペランドの評価がtrueの場合,結果はtrueになります。論理OR演算の初めのオペランドがtrueの場合,二つ目のオペランドは評価されません。

論理ANDおよび論理OR式のオペランドは,左から右に評価されます。一つ目のオペランドの値だけで演算結果を判別できるときは,二つ目のオペランドは評価されません。これを「短絡評価」と呼びます。

(a) 論理AND演算子(&&)の場合

両方の式がtrueと評価された場合は,結果はtrueになります。式のどちらかがfalseと評価された場合は,結果はfalseになります。次の表では,評価結果の判別方法を示します。

式1の評価式2の評価評価結果
truetruetrue
truefalsefalse
falsetruefalse
falsefalsefalse
(b) 論理OR演算子(||)の場合

どちらか一方,または両方の式がtrueと評価された場合は,結果はtrueになります。次の表では,評価結果の判別方法を示します。

式1の評価式2の評価評価結果
truetruetrue
truefalsetrue
falsetruetrue
falsefalsefalse

(3) 記述例

DEFINE
{
  float varfloat1 = 1.567e-1;
  integer varint1 = 10;
  integer varfloat2 = 0;
  integer varint2 = 0;
  bool varbool;
  integer WINH;
}
MAIN
{
  varbool = varfloat1 && varint1;
  AIT_LogMessage("The expected value of varbool is: true");
  varbool =varfloat2 && varint1;
  AIT_LogMessage("The expected value of varbool is: false");
  varbool=varfloat1 && varint2;
  AIT_LogMessage("The expected value of varbool is: false");
  varbool=varfloat2 && varint2;
  AIT_LogMessage("The expected value of varbool is: false");
}