• ベストアンサー

論理演算について教えて下さい。

基本的な論理演算について教えて下さい。 例えば、変数aにTrueを、変数bにNullを代入し、 a and b をした場合、Nullになるのは、わかるんですが、 a or b をした場合、なんでTrueになるんですか? 又、変数aにFalseを、変数bにNullを代入し、 a or b をした場合、Nullになるのは、わかるんですが、 a and b をした場合、なんでFalseになるんですか? お願いです。教えて下さい。。。 理由がわかりません。。。。

質問者が選んだベストアンサー

  • ベストアンサー
  • oruka
  • ベストアンサー率42% (16/38)
回答No.6

andとorの基本的な概念およびFの意味さえ把握しておけば、あとはどんな問題も丁寧に場合分けすれば自明です。 おそらくここのところでつまずいておられるのではと思いますので、、 AandB:ABともにTのときのみTとなる、それ以外はF AorB:AかBどちらか一方でもTならT(両方TならもちろんT)両方FのときのみF Nというのは「TかFか分からない状態」なので、 もしTだった場合どうなるか? もしFだった場合どうなるか? をそれぞれ考える。その結果が、 いずれもTなら演算結果もT(に確定)、 いずれもFなら演算結果もF(に確定)、 Tの場合とFの場合で結果が異なるなら演算結果は(確定できないから)Nとなる。 あとは質問の例についてご自身でゆっくり試してみて下さいね。

jcos
質問者

お礼

どうもありがとうございました。 やっと理解出来ました。 どうやら、Nの意味合いが理解出来てなかったみたいです。 ありがとうございました。

その他の回答 (5)

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.5

No.4のymmasayanです。 No.3の方の言われるように2値論理ではnullはありません。 質問の言語はSQLの3値論理だと想定しています。

jcos
質問者

お礼

どうも、すいません。。。 質問の補足をして頂いて。。。 ありがとうございました。

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.4

No.1,No.2の方は勘違いされているようです。 この問題は三値論理の問題です。真、偽、不定の3つの状態で考えます。 不定は N(Null・・0ではない)またはU(Unknown)と表現します。 参考URLがわかりやすいです。基本から復習し直してください。

回答No.3

2値論理であれば、true と false しかありません(null はありません)。 「変数」とか“Null”とかいうことばがでてくるところをみると、コンピュータのプログラム言語について質問されているのではないかとおもうのですが、どうでしょうか。 コンピュータのプログラム言語について質問であれば、言語をおしえてください。私がこたえられなくても、だれかがこたえてくれるとおもいます。 (null がゼロである言語もあればそうでない言語もあります。)

jcos
質問者

お礼

ありがとうございました。

  • nitscape
  • ベストアンサー率30% (275/909)
回答No.2

#1です。補足ですが >a or b をした場合、Nullになるのは、わかるんですが、 >a and b をした場合、なんでFalseになるんですか? どちらの場合も演算結果は「0」であり「False」でも「Null」でもありますよね(表現方法の違いだけですよね)。

jcos
質問者

お礼

ありがとうございました。

  • nitscape
  • ベストアンサー率30% (275/909)
回答No.1

Trueは「0以外」 Falseは「0」 Nullは「0」 ですよね(たいていの状況では)。 だとすると 変数aにTrueを、変数bにNullを代入 a or b は 「0以外」or 0 で結果は「0以外」=true 変数aにFalseを、変数bにNullを代入 a and b は 0 or 0   =0 =false どうでしょう?