プログラミングの基本的手法の1つに、論理演算というものがある。
これは真偽値(真=true、偽=false)同士の組み合わせを評価し、結果をtrue/falseで返すというものだ。
この演算のための演算子の代表的なものがANDとORで、それぞれ論理積と論理和という。
式aとbにtrue/falseのいずれかが定義されているとして、
a AND bだったらaとb両方がtrueのときのみ、演算結果がtrueになり、
a OR bだったらaとbいずれかがtrueであれば、演算結果がtrueになる。
ということは、
ANDの場合は左辺の式がfalseの時点で、右辺を評価するまでもなく演算結果はfalseとなり、
ORの場合は左辺の式がtrueの時点で、右辺を評価するまでもなく演算結果はtrueとなる。
これを短絡評価といい、今どきのプログラミング言語では必ずこの仕掛けが実装されていると。
これは排他的論理和といい、演算子の右辺と左辺の結果が違う組み合わせの場合のみtrueとなる。
つまりa=trueかつb=falseの場合か、a=falseかつb=trueの場合のみ、演算結果(a XOR b)がtrueとなる。
問題は、どういうわけかこのXORには短絡評価が存在しないのだ。
どのプログラミング言語を調べても短絡評価がないので、かなり驚いている。
一体どういうこと?
(追記)
XORには 左辺の式がxxの時点で、右辺を評価するまでもなく演算結果はyyとなる。 ってパターンが無くて、必ず両辺を調べないと演算結果がわからないから
Xおああああー
ANDの場合は左辺の式がfalseの時点で、右辺を評価するまでもなく演算結果はfalseとなり、 ORの場合は左辺の式がtrueの時点で、右辺を評価するまでもなく演算結果はtrueとなる。 なんか勘...
どういう勘違いをしていると想定したのかがわからん
ANDの場合は左辺の式がfalseの時点で、右辺を評価するまでもなく演算結果はfalseとなり、 ORの場合は左辺の式がtrueの時点で、右辺を評価するまでもなく演算結果はtrueとなる。 これ自体...
これは言語仕様レベルできっちり定義されていて 「無駄だけど一応右辺も評価しとくか」っていうコンパイラがあったら明確に仕様違反だよ
具体的な言語は指定されてないんだから「右辺も評価する言語」を想定したっていいだろう
今テメー、短絡評価の無いVB6.0さんをディスったな?
それはVB6さんの言語仕様で「短絡評価はしない」と決まってるんやろ メンテナの気分で「バージョンアップついでに短絡評価入れてみました」なんてならんかったやろ
頭悪すぎるだろ