論理演算子

論理演算子は、bool型の値を使って論理演算を行います。


taiseiue | 2021-12-25

論理演算子は、bool型の値に使用できます。数値型の値でも&|^演算子を使用することがありますが、これについてはビット演算子をご覧ください。

論理否定演算子 !

論理否定演算子!が先頭についたリテラルはその値の論理否定となります。次に例を示します。

AliceScript
print(!true); //出力:false
print(!!true);//出力:true

この論理演算の真理値表を次に示します。

x !x
true false
false true

論理積演算子 &

論理積(AND)演算子&は、左右の値の両方がtrueと評価された場合のみtrueを返し、それ以外の場合falseを返します。

&演算子は常に両方のオペランドを評価する一方、&&演算子は左辺がfalseと評価された時点で右辺は評価されません。

AliceScript
print(true & true); //出力:true
print(true & false);//出力:false

この論理演算の真理値表を次に示します。

x y x & y
true true true
true false false
false true false
false false false

論理和演算子 |

論理和(OR)演算子|は、左右の値の少なくとも一方がtrueと評価された場合にtrueを返し、それ以外の場合にfalseを返します。

|演算子は常に両方のオペランドを評価する一方、||演算子は左辺がtrueと評価された時点で右辺は評価されません。

AliceScript
print(true | false); //出力:true
print(false | false);//出力:false

この論理演算の真理値表を次に示します。

x y x | y
true true true
true false true
false true true
false false false

排他的論理和演算子 ^

排他的論理和(XOR)演算子^は、左右の値が異なると評価された場合(すなわち、片方がtrueと評価されたならばもう片方がfalseと評価される場合)にtrueを返し、それ以外の場合はfalseを返します。つまりこの演算はboolに対する!=と同じ結果となります。次に例を示します。

AliceScript
print(true ^ false);//出力:true
print(true ^ true); //出力:false

この論理演算の真理値表を次に示します。

x y x ^ y
true true false
true false true
false true true
false false false

条件付き論理積演算子 &&

条件付き論理積(AND)演算子&&は、左右の値の両方がtrueと評価された場合のみtrueを返し、それ以外の場合falseを返します。

&演算子は常に両方のオペランドを評価する一方、&&演算子は左辺がfalseと評価された時点で右辺は評価されません。

AliceScript
print(true && true); //出力:true
print(true && false);//出力:false

次に、この論理演算の真理値表を示します。

x y x && y
true true true
true false false
false true false
false false false

条件付き論理和演算子 ||

条件付き論理和(OR)演算子||は、左右の値の少なくとも一方がtrueと評価された場合にtrueを返し、それ以外の場合にfalseを返します。

|演算子は常に両方のオペランドを評価する一方、||演算子は左辺がtrueと評価された時点で右辺は評価されません。

AliceScript
print(true || false); //出力:true
print(false || false);//出力:false

次に、この論理演算の真理値表を示します。

x y x \| y
true true true
true false true
false true true
false false false

3値論理演算

対応バージョン>=Alice4.0

左右どちらかのオペランドがnull許容型の場合、&(論理積)演算子と|(論理和)演算子は、3値論理に基づいた演算を行います。 また、!演算子と^演算子をnullの値に適用すると、値は常にnullになります。短絡評価を行う演算子(&&||)は、3値論理演算に使用することができません。

3値論理積演算

&(論理積)演算子は、左右どちらかのオペランドにbool?型が渡された場合に以下のルールに従って論理演算を行います。

  • 左右両方のオペランドがtrueの場合、trueを返す
  • 左右どちらかのオペランドがfalseの場合、falseを返す
  • どちらの条件にも当てはまらない場合、nullを返す

この論理演算の真理値表を次に示します。

x y x & y
true true true
true false false
true null null
false true false
false false false
false null false
null true null
null false false
null null null

3値論理和演算

|(論理和)演算子は、左右どちらかのオペランドにbool?型が渡された場合に以下のルールに従って論理演算を行います。

  • 左右両方のオペランドがfalseの場合、falseを返す
  • 左右どちらかのオペランドがtrueの場合、trueを返す
  • どちらの条件にも当てはまらない場合、nullを返す

この論理演算の真理値表を次に示します。

x y x | y
true true true
true false true
true null true
false true true
false false false
false null null
null true true
null false false
null null null