4-1

 

ビット演算子

 

ビット演算子とはビット単位の演算を行うもの だそうです。

ビットということで2進法で考えていかなければならない(^^ゞ

一応 プログラムを!!

私の頭を悩ませ 未だに??マークがいっぱい。

ビット演算子
ビット演算子

まず 2行目 4行目 6行目 8行目の

#define CAT  1 とか #define DOG 2 などは

CATを1に DOGを2に定義すると意味です。

しかし これはビット演算子なので2進法で考えないといけない(;一_一)

1は2進法で0001 2は2進法で0010になります。

 

次の25行目 28行目 31行目

の(a&CAT)とかはaはCATとDOGなので 0001と0010になり

&はビット積といってともに1なら1ということなので

CATは1になる。

次のDOGも同じ 

(a&RAT)はともに1にならないので0

RABBITも0になる。

!=の記号は等しくないかどうか調べる記号

等しくない場合それは真になり

等しい場合それは偽になります。

等しくない時は結果に1が代入されます。

等しい時には0が代入されることになる。

なので(a&CAT)は1なので0と等しくないので1になると

いうことです。

なんか 曲がりくねった 解釈をしないといけないような??

ここまで 到達するだけで3日位かかってしまった。

 

 

 

結果
結果

 

実行すると こんな結果になります。

これがどうした(^^ゞ という感じですが

まあ ビット演算子ってこんなもん と思えばいいのか?

私 個人的には 何??これ??

そのうち これは 必要なもの 便利なもの とか

思えるようになるのか? 多分 そう思えるほどのところまで

到達しないような・・・・。

 

 

 

4-2

関数を分ける

 

前回書いた ビット演算子もめちゃくちゃ 悩んだけど

今回の関数を分ける? main関数以外の関数を作る

という 意味がわからない???

 

問題は超簡単なものなのに 関数を分ける 関数を呼び出す

関数に 戻り値が・・・。

 

main関数だけでやっていくと 少しはわかりやすい(^^ゞ

けどそういうわけにはいかないみたいだし・・・。

いままでは

#include <stdio.h>

int (main)

で始まっていたのだけど

3行目に

float calculator(int op)

 

という ”関数のプロトタイプ宣言”

をしないといけない

 

後になってしまったけど

問題は

10.0 と3.0 という2つの値を使って

4則計算を実行し、答えを画面に出力しなさい。

算術演算子はキーボードから入力できるように

プログラムを作成して下さい。

 

ということなのだ。

5行目に今まで通りmain関数を宣言する。

 

8.9 は変数の宣言。

 

9のanswerは戻り値になる。

なぜ?って思うけど そうだから そうなのだ

と思わなければいけない・・・・みたい。

 

12で演算子入力のメッセージを画面に出力する。

これは いつものことなので わかりやすい(*^^)v

 

14 これはついついscanf と書きたくなる。

1文字なので getchar になる・・・・ らしい。

 

16でcalculator関数を実行する。

ということなので

次に飛びます。

 

28行目の

float calculator(int op)

に行き

実行していきます。

・・・多分

 

変数を宣言します。

 float answer  です。

 

switch文です。

どうだったけ?

すぐに忘れてしまう(^^ゞ

 

もう1度 switch文の所を読み返しました。

 

おお まじめ(^^)/ って だって忘れてるから

仕方ない。

 

では ここからswitch文についてです。

 

電源のスィッチと同じ意味で

変数の値が指定した定数と等しい時

そのスィッチがonになり

直後に記述した処理が実行されます。

 

ふむふむ

 

だから case  '+' ;は になったら

   answer=10.0+3.0;が実行される

 

そして 戻り値として

  return answer つまりこの場合は13が返される。

続きは下のプログラムの後に! 

 

 

 

 

 

13はー1ではないので

上のプログラム18行目の

if(answer==-1){

printf("演算子が間違ってます。)

にはならないで

 

else{

   printf("演算結果%f/n",answer);

が実行される。

 

演算結果 13.000000

と表示される。

デーダ型がfloatなので 小数点以下ま表示される。

 

49行目のdefault それまでの case以外なら

 

-1を返すということらしい。

 

以上がこの説明です。

 

わかりやすいようで わかりにくい?? 説明。

 


訪問ありがとうございます。

Jimdoのリンク

 

ペイント絵の素敵な

モンキーのHP

 

パソコングループ

そよかぜのHP

そよかぜ