論理演算子

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


taiseiue | 2021-12-25

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

論理否定演算子 !

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

AliceScript
print(!true); //出力:false
print(!!true);//出力: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