論理演算子について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: 論理演算子について

Re: 論理演算子について

#3

by Bobchanpon » 6年前

論理演算子の真偽値なんてものがあるんですね!おかげで理解することができました!
丁寧に説明していただきありがとうございました!!

Re: 論理演算子について

#2

by YuO » 6年前

オフトピック
3行目の戻り値の型intと,5行目の末尾にセミコロンが足りませんが,そこをおぎなった上で以下を書いています。
また,Cの話なので論理値は1と0で表すべきですが,説明上true(真)とfalse(偽)で表しています。
論理演算子の真偽値
  • true || true => true
  • true || false => true
  • false || true => true
  • false || false => false
  • true && true => true
  • true && false => false
  • false && true => false
  • fales && false => false
  • !true => false
  • !false => true
を元に,ちゃんと計算していけばよいです。

まず,演算時の変数の値から,
  • b == 0 => false : 偽
  • b == 1 => true : 真
はわかっていると思います。

最初の式は,

コード:

!((b == 0) || (b == 1))
です。

コード:

!((false) || (true))
!(false || true)
!(true)
!true
false
ですから,結果は偽になり,0と出力されます。

2番目の式は,

コード:

!(b == 0) || !(b == 1)
です。

コード:

!(false) || !(true)
!false || !true
true || false
true
ですから,結果は真となり,1と出力されます。

3番目の式は,

コード:

!(b == 0) && !(b == 1)
です。

コード:

!(false) && !(true)
!false && !true
true && false
false
ですから,結果は偽になり,0と出力されます。

最初の式と3番目の式は,ド・モルガンの法則で関係付けられます。
  • 式 (!(A && B)) と 式 (!A || !B) は等しい
  • 式 (!(A || B)) と 式 (!A && !B) は等しい
今回の例だと,Aが(b == 0)でBが(b == 1)になります。

論理演算子について

#1

by Bobchanpon » 6年前

つい最近C言語を勉強し始めたのですが、分からないことがあったので投稿させていただきました。

コード:

#include<stdio.h>

main()
{
int b=1
printf("%d\n",!((b==0)||(b==1)));
}
上記のものなら 0(偽) と正しく出るのですが...。

コード:

#include<stdio.h>

main()
{
int b=1
printf("%d\n",!(b==0)|| !(b==1));
}
これだと何故か 1(真) と出てきます。

コード:

#include<stdio.h>

main()
{
int b=1
printf("%d\n",!(b==0)&& !(b==1));
}
||を&&に変えると 0(偽) と正しく出てきます。
とくに意味はなく、これはこうしなきゃいけないといったルールみたいなものなのでしょうか?
分からなくて困っているので教えていただけると助かります...T_T

コンパイルは paiza.IO というオンラインコンパイラを使用しています。

ページトップ