論理演算子&& 論理式かつ論理式のような組み合わせも論理式となり0か1の論理値をもちます 


よし、再び再開します。


論理演算子&&のページを開く。



いままでみてこられましたように


==や>=のような関係演算子をつかって


作られた論理式は0か1の値をもちます。


関係演算子==によって作られる論理式は


左辺の項と右辺の項が等しければ真の値1を持ち

左辺の項と右辺の項が等しくなければ偽の値0をもちます。


たとえば

5==5は

左辺の5と右辺の5は等しいということを述べている論理式となっています。

この状態は論理的に正しいので


論理式5==5は真の値1をもちます。


5==8は

左辺の5と右辺の8は等しいということを述べている論理式となっています。

この状態は論理的に正しくないので


論理式5==5は偽の値0をもちます。



論理式 5==5ならば


次のプログラムを実行してみていただけても


おわかりになられますように


#include <stdio.h>


int main(void){


printf("%d\n",5==5);//👈ここに注目


return 0;

}


プログラムの実行結果


1


論理式

5==5は1の値をもっています・・・


成程・・・ですの・・・


窓の外をみやる


ぴよ ぴよ

    🐤~~~  

       🐤~~~~~


あっ小鳥が飛んでる。


ちゅん、ちゅ、ちゅん


ちゅん、ちゅ、ちゅん


ではでは


論理式

5==5に似た


5=5はいかなる値をもっているのでしょう?


#include <stdio.h>


int main(void){


printf("%d\n",5=5);


return 0;

}


プログラムの実行結果

(EAZY IDECの場合)


ファイル「C:/Users/solarplexus/AppData/Local/EasyIDEC/project/wwwwwww/main.c」の

「5行目」で記述エラーを発見しました。

「lvalue」を付け忘れています。



ビルド結果(Visual studioの場合)


エラー (アクティブ) E0137 式は変更可能な左辺値である必要があります

エラー C2106 '=': 左のオペランドが、左辺値になっていません。 5


(a=5のように 左辺は数値データ5が代入できる変数である必要があるといっています)


???この5=5の書き方はさすがにまずかった・・かな・・・


5=5の=は関係演算子ではなく代入演算子なので


関係演算子==であらわされた


5==5の論理式のように


5=5は論理式とはならず


数値1の値をもたないのです。


🐤

ちゅん、ちゅ、ちゅん


ちゅん、ちゅ、ちゅん 🐤


窓から光が室内の白いテーブルに差し込み


静謐な佇まいをみせている。。


さらに文書を読み進めるアレサ


なに、なに・・・

論理演算子&&、||、! ・・・


論理演算子&&は論理式と論理式をむすびつけ


1>5&&12>6


のような新しい論理式を生成します。



窓から爽やかな風が吹き込んでくる。



ここで&&は日本語で、かつ、という意味であり


A&&Bという論理式はAかつBである、という状態をあらわしています。


ここで


A&&Bという論理式はAかつBである、という状態をあらわしています。

とはどのような状態なのか



例をあげて ご説明いたします


論理式は0と1のどちらかの値のみをもちます


論理式

5>1は 5は1より大きいということを述べていますが


論理的に真ですの。


ですから


論理式

5>1は真の値1をもちます。


論理式

1>5は 1は5より大きいということを述べていますが


論理的に偽ですの。


ですから


論理式

5>1は偽の値0をもちます。


このように


論理式では


論理式が論理的💖💖💖に正しいか正しくないかによって


0と1の値のどちらかの値をもつことになります。


そして


関係演算子&&を用いて表された

5>1&&10>18



論理式となっています


では関係演算子&&をもちいて作製された論理式


5>1&&10>18はどのような状態を表している論理式なのでしょうか?


5>1&&10>18は


5は1より大きい


かつ


10は18より大きい


ということをのべている論理式となっています。


つまり


5は1より大きい


かつ


10は18より大きい


が同時に成立していることを表している論理式となっています。


論理式&&が使用された論理式は


左辺と右辺が両方とも論理的に正しいときのみ


論理値1を持ち


左辺と右辺のどちらかが正しくない場合は


論理値0を持つよう設定されています。



5>1&&10>18の左辺の


5は1より大きい



論理的に正しいのですが


右辺の


10は18より大きい



論理的に正しくありません。


よって


論理式5>1&&10>18は偽の値0をもちます。


次に


5>1&&10>8


つまり


5は1より大きい


かつ


10は8より大きい


ということを述べている論理式についてみていきましょう。


5>1&&10>8の左辺


は論理的に正しいかというと


左辺の

論理式

5>1

5は1より大きい



論理的に正しく


右辺の

論理式

10>8

10は8より大きい



論理的に正しいですの。


左辺と右辺の両方の論理式が1の値をもちます。


ですので


論理式

5>1&&10>8は真の値1をもちます。


ところで


次のように考えられる方もおられると思いますの。





論理式

1>5&&12>6


1の値をもつか

0の値をもつかを


考察するとします。



1>5は論理的に偽であり数値0の値をもち

12>6は論理的に真となって数値1の値をもっています。


よって

1>5&&12>6は


0の値をもつことになります


1>5&&12>6において


1>5は論理的に偽であり数値0の値をもち

12>6は論理的に真となって数値1の値をもつのなら


1>5&&12>6



0&&1


つまり


数値0かつ数値1であるという状態をあらわす論理式ですの


そして


0&&1



0の値を持ちます


数値0かつ数値1であるという状態は


どういう状態なのか?


数値0かつ数値1であるという状態は


0


1


0


01



と考えられる方もおられるかもしれません。



0&&1という論理式は


数値0かつ数値1であるという状態ではなく


0や1も論理式とみなされるので


論理値0をもつ論理式かつ論理値1を持つ論理式であるという状態をあらわしています。



0&&1という論理式は


数値0かつ数値1である状態を表している数式ではありません。


0&&1という論理式のままで考えるとむずかしいのですが



先ほどの例のような


1>5&&12>6という論理式で考えると簡単ですの。


1>5&&12>6という論理式は


1は5より大きいという論理式



12は6より大きいという論理式が


論理演算子&&により結び付けられた論理式となっています。


そして


ここが重要なのですが

左辺の

1>5の論理式は論理的に偽であり数値0の値をもち

右辺の

12>6の論理式は論理的に真となって数値1の値をもっています。


そのとき


1>5&&12>6という論理式は0という値をもつか


1という値をもつか


1>5&&12>6という論理式は論理的に正しいか正しくないか?



自分で考えて導き出すことはできません。



&&使



1



0


ですので


1>5&&12>6という論理式は0という値をもつ


ということが導き出すことができます。



このように


1は5より大きいと述べている論理式

1>5


に与えられる数値0



12は6より大きいと述べている論理式

12>6


に与えられる数値1



論理式

1>5&&12>6にあたえられる数値1



論理値とよばれます。



0&&1


という論理式のなかの


0や1は普通の数値ではなく


その論理式が述べていることが正しいか正しくないかを


あらわす


論理値なのです。



ですので


論理式

0&&1



数値0かつ数値1であるということを述べている


論理式ではありません。


0&&1



論理的に正しくないという論理式



論理的に正しいという論理式



&&によって


結び付けられている論理式なのです。


&&が使用されている論理式の左辺と右辺が論理的に正しい場合のみ


その論理式は論理値1をもちます。


左辺と右辺のどちらか1方でも論理的に正しくない場合は


その論理式は論理値0をもちます。


よって

論理式

0&&1

論理値0をもちます。



ちゅん、ちゅん(^^)


論理演算子&&による


論理式&&論理式のくみあわせによって新たにつくられる論理式は


論理式 0&&0 論理値0を持つ論理式と論理値0を持つ論理式が&&によって結び付けられた論理式

論理式 0&&1 論理値0を持つ論理式と論理値1を持つ論理式が&&によって結び付けられた論理式

論理式 1&&0 論理値1を持つ論理式と論理値0を持つ論理式が&&によって結び付けられた論理式

論理式 1&&1 論理値1を持つ論理式と論理値1を持つ論理式が&&によって結び付けられた論理式

これらの4通りの論理式しかありません。


そして


        🍊論理式は論理値0か1のいずれかの値をもつので🍊


論理式 0&&0 論理値0を持つ論理式と論理値0を持つ論理式が&&によって結び付けられた論理式

論理式 0&&1 論理値0を持つ論理式と論理値1を持つ論理式が&&によって結び付けられた論理式

論理式 1&&0 論理値1を持つ論理式と論理値0を持つ論理式が&&によって結び付けられた論理式

論理式 1&&1 論理値1を持つ論理式と論理値1を持つ論理式が&&によって結び付けられた論理式


も0か1のいずれかの論理値をもつことになります。


そのことを確かめるプログラムを構成して実行してみると


#include <stdio.h>


int main(void) {


printf("%d\n", 0 && 0);

printf("%d\n", 0 && 1);

printf("%d\n", 1 && 0);

printf("%d\n", 1 && 1);


return 0;

}


EAZY IDECの場合

プログラムの実行結果

0

0

0

1


Visual studioの場合

ビルド実行結果

0

0

0

1


論理式 0&&0は


論理値0を持つ論理式と論理値0を持つ論理式が&&によって結び付けられた論理式


をあらわしており


最初からの設定により


論理値0の値をもちます。


左辺の論理式も右辺の論理式も論理値1をもつ場合のみ論理値1をもち


それ以外


左辺か右辺の論理式が0の値を持つ場合は論理値0の値をもちます


ですので


論理式 0&&0は0の値をもちます



論理式 0&&1は


論理値0を持つ論理式と論理値1を持つ論理式が&&によって結び付けられた論理式


をあらわしており


論理値0であらわすか?

論理値1であらわすか?


ということになりますが


さきほどみてきたように


&&が使用されている論理式の左辺と右辺が論理的に正しくて1の値をもつ場合のみ


その論理式は論理値1をもちます。


左辺と右辺の論理式


どちらか1方でも論理的に正しくない場合は


その論理式は論理値0をもちます


ですので


論理式 0&&1は


論理値0の値をもつことになります。


論理式 1&&0は


論理値1を持つ論理式と論理値0を持つ論理式が&&によって結び付けられた論理式をあらわしており


論理値0であらわすか?

論理値1であらわすか?


ということになりますが


&&が使用されている論理式の左辺と右辺が論理的に正しい場合のみ


その論理式は論理値1をもちます。


左辺と右辺のどちらか1方でも論理的に正しくない場合は


その論理式は論理値0をもちます


ですので


論理式1&&0は論理値0の値をもちますね。



論理式 1&&1は


論理値1を持つ論理式と論理値1を持つ論理式が&&によって結び付けられた論理式をあらわしており



論理的にただしい論理式(論理値1の値をもつ論理式)



論理的にただしい論理式(論理値1の値をもつ論理式)



&&によって


結び付けられている論理式です。


ですので


論理式 1&&1は


論理値1の値をもちます。


はい、なるほど・・・



このように


数学の集合ならa>1かつa>5なら


結果はa>5となりますが


C言語の


論理式かつ論理式においては


結果は


       🍅論理式かつ論理式は論理式となり0か1のいずれかの論理値をもつんですの・・・🍅



ちゅちゅん、ちゅちゅん、


ああっ鳥が鳴いている・・・

  • Xで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る