初心者です。

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

初心者です。

#1

投稿記事 by lily » 6年前

テキストを読んでいてどうしても分からない箇所があります。

i=10;
j=5;
!i<j

i=5;
j=0;
k=-5;
i&&j||

この真偽値は何かという問題なのですが正直意味がわかりません。
誰か知恵を貸してください。
よろしくお願いします。

かずま

Re: 初心者です。

#2

投稿記事 by かずま » 6年前

i = 10; j = 5; を実行したとき、
-i + j という式の値は何かという問題なら分かりますよね。
- という単項演算子により -i の値は -10 です。
+ という二項演算子により -i + j の値は -5 です。

さて、!i < j も演算子を使った式であり、値があるのです。
! という単項演算子により !i、すなわち !10 の値は 0 です。
< という二項演算子により !i < j、すなわち 0 < 10 の値は 1 です。

「! 演算子」は、オペランドの値が 0 ならば 1 を、
そうでなければ 0 を演算結果の値とします。
「< 演算子」は、左のオペランドの値が右のオペランドの値より
小さければ 1 を、そうでなければ 0 を演算結果の値とします。

結果が 0 または 1 である演算子には、
==, !=, <, <=, >, >=, !, &&, || などがあります。
1 が真を、0 が偽を表します。
この 1 か 0 の値を真偽値といいます。

0 < 10 は正しい。だから真で 1 です。
0 > 10 は正しくない。だから偽で 0 です。

! は否定を表し、!0 は 1、!1 は 0 です。
偽でなければ真、真でなければ偽ということです。
ただし、!2 も 0 です。
真偽を判定するとき、0 は偽ですが、
0 でないものはすべて真と判断します。

&& という二項演算子は、左辺が真のとき、右辺を評価し、
真偽値を決定します。
|| という二項演算子は、左辺が偽のとき、右辺を評価し、
真偽値を決定します。

i = 5; j = 0; k = -5; のとき
i は真だから、i && j は、j の値となり 0 です。
i && j が 0 で偽だから、i && j || k は、k の値を評価し、
それは 0 ではないので真、すなわち 1 となります。

理解出来たら、解決にしてください。そうでなければ、
どこが分からないのかを質問してください。

かずま

Re: 初心者です。

#3

投稿記事 by かずま » 6年前

かずま さんが書きました: && という二項演算子は、左辺が真のとき、右辺を評価し、
真偽値を決定します。
|| という二項演算子は、左辺が偽のとき、右辺を評価し、
真偽値を決定します。
&& という二項演算子は、
左オペランドが偽のとき、右オペランドを評価せず、演算結果は 0 です。
左オペランドが真のとき、右オペランドを評価し、真偽値を決定します。

|| という二項演算子は、
左オペランドが真のとき、右オペランドを評価せず、演算結果は 1 です。
左オペランドが偽のとき、右オペランドを評価し、真偽値を決定します。

lily

解決しました。

#4

投稿記事 by lily » 6年前

こんな基本的なことなのに丁寧に説明して頂きありがとうございました。
1以外の数値2や3でも!をつけたら0が返るということを知らなくてずっと悩んでいました。
納得しました。重ねてありがとうございます。

かずま

Re: 解決しました。

#5

投稿記事 by かずま » 6年前

解決にしてください、というのは、返信時に「解決!」の
チェックボックスにチェックを入れて送信してください、
という意味です。

また、件名は変更するものではありません。

最初の件名も間違っています。
「初心者です。」についての質問ではありませんよね。
他の質問と区別がつくように、内容に関係のあるものにしましょう。

質問するときは、フォーラムルールをよく読んでください。

lily

Re: 初心者です。

#6

投稿記事 by lily » 6年前

ご指摘ありがとうございます。
以後気を付けます。

返信

“C言語何でも質問掲示板” へ戻る