論理否定 !演算子は論理式が持っている値を0なら1へ1なら0へひっくり返します。 

アレサ 「では、再び(^^)/


C言語を学んでいきます。


マックスさんたちが 山の幸を採集している間に


こちらもC言語採集しましょうよ。


!演算子は論理式のもつ真か偽の値 0か1を


0なら1へ

1なら0へ   と


ひっくり返す演算子です。


つぎのプログラムをみていきましょう。


#include <stdio.h>


int main(void){

printf("%d\n", (10>1));

printf("%d\n", !(10>1));

return 0;

}


コンパイル結果


1

0

(10>1)の論理式(真)の値1が


!演算子により


(偽)の値0へとひっくりかえっているのがわかります。


では・・・では



    論理式!(5>1&&10>1)は どのような値をもつでしょうか?



(うふっ 数学における集合では


集合{x>1かつx>5} の補集合は


{x<=1またはx<=5}


つまり


 {x<=5 }となりますが


それはここでは関係ないようですね。)



どうしましょう。


!(5>1&&10>1)のような論理式がもつ値を


計算するのはとても簡単です。


コンピューターにおいては


論理式は0か1の値、いずれかの値しかもたないため


論理式 5>1は真の値1をもち

論理式 10>1も真の値1をもちます。


そこで


論理式!(5>1&&10>1)は


論理式!(1&&1)


と書き直せます。


!(1&&1)の中身である


(1&&1)、1かつ1が


真の値1をもつよう設定されているので


(1&&1)=1となるので


論理式!(1&&1)=!1となり


ここで!演算子の働きにより1の値が反転し


!1=0となります。


よって


論理式!(5>1&&10>1)は0の値をもちます



これで論理式の項目の学習範囲がすべて終わりました。


明日からの


if文がとっても楽しみです。


これらの論理式の仕組みが理解できると


論理式の値が1なら 命令文を実行する


論理式の値が0なら 命令文を実行しない


のような 場合分けのプログラムが作製できるようになるんです。


シューティングゲームなら


コントローラーボタンをおすと レーザーがでる、


コントローラーボタンをおさないと レーザーがでない、


という具合に、です。


これまでよりプログラミングの幅がひろがっていくんです。


いいところまできました。


私も嬉しくなりますの。」


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

作者を応援しよう!

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

応援したユーザー

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