論理演算子&& 論理式かつ論理式のような組み合わせも論理式となり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という値をもつのか?
数値0かつ数値1であるという状態は
そもそも数値をもたないのではないか?
と考えられる方もおられるかもしれません。
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のいずれかの論理値をもつんですの・・・🍅
ちゅちゅん、ちゅちゅん、
ああっ鳥が鳴いている・・・
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます