困った顔のぷうさん

さ~てと、今日で3日目だ。意外と続くではあーりませんか☆
今日はどこからだったっけ?・・・だけど、いつも寝ないと出てこないなあ、博士は!
CDでも聞こうかな?・・・え~とダプクリしてっと・・・げっ、アクセスできませんでしただって?
よし、もう一度・・・あれ?またダメだって?!


博士

ほらほら、Cの勉強始めるぞい。


ぷうさん「?」

あれ?博士?いつの間に出てきてたの?


博士

つい今し方じゃ。


ぷうさん「怒」

アクセス不能にしたのじいちゃんでしょ?


博士「怒」

それはの、昨日疲れておると思って早めに切り上げてやったのに、あれから延々とゲームなんぞしておったからじゃ。
全く!だいたいじゃな、ゲームなどするんなら、Cの予習でもせんかい!


困った顔のぷうさん

・・・・。


博士

とにかく今日はじっくりとやるぞい。
ポインタだって本当に分かったかどうか怪しいもんじゃしの。


ぷうさん

昨日は分かったつもりなんだけどな。
ハハハ・・・オートデリート機能が・・・。


博士「ここをチェックじゃ」

今日のお題は『C言語らしい書き方』・・・ということは「こんな風にも書くことができるC言語」じゃな。

演算子の略し方

博士「ここをチェックじゃ」

ちょびっとずつ短くなっておるぞい。

代入演算子

変数=変数 演算子(式)
⇒ 変数=演算子(式)

i=i+2 ⇒ i+=2
cnt=cnt-1 ⇒ cnt-=1

インクリメント演算子、デクリメント演算子

インクリメント演算子

変数=変数+1
⇒ 変数++ または ++変数

i=i+1 ⇒ i++ または ++i

デクリメント演算子

変数=変数-1
⇒ 変数– または –変数

i=i-1 ⇒ i– または –i

チェックポイント

博士「ここをチェックじゃ」

ただし、++や–が変数の前にあるのと後にあるのとでは、式の中などで使った場合、計算結果が違ってくるから気をつけることじゃ。


困った顔のぷうさん

どう違うの?読み方は?プラプラとマイマイかな?
わお!で~んでんむ~しむし、かあたつむりい~・・・
プラプラ様の前でしてはいけない事、パンをXXに挟んで・・


博士

・・・・また始まった・・・ほれほれ、よ~く覚えるんじゃぞ。

計算結果の違い







インクリメント演算子
++iの場合
i=3;
a=++i

*考え方*
i=3
i=i+1
a=i
a=4

i++の場合
i=3;
a=i++

*考え方*
i=3
a=i
i=i+1
a=3

デクリメント演算子
–iの場合
i=3;
a=–i

*考え方*
i=3
i=i-1
a=i
a=2

i–の場合
i=3;
a=i–

*考え方*
i=3
a=i
i=i-1
a=3

博士

どうじゃな?分かったかな?

まあ、前にある時は先に足して(引いて)ある。
後ろにある時は、後で足す(引く)と覚えておけばいいじゃろうて。

演算子のテスト

博士「?」

分かったかどうかチェックするぞい。
次の3つのプログラムの実行結果を答えるんじゃ。
当たるかの?

プログラム1

#include <stdio.h>
main()
{
   int kazu=0;
   kazu++;
   printf("1:kazu%d\n",kazu);
   ++kazu;
   printf("2:kazu%d\n",kazu);
   kazu+=10;
   printf("3:kazu%d\n",kazu);
   kazu/=2:
   printf("4:kazu%d\n",kazu);
   kazu*=5+3;
   printf("5:kazu%d\n",kazu);
}

プログラム2

#include <stdio.h>
main()
{
   int i;
   for(i=0;i<=2;i++) {
      printf(" %d",i);
   }
   printf("\n");
   for(i=0;i<=5;i++) {
      printf(" %d",i);
   }
   printf("\n");
   for(i=10;i>5;i-=3) {
      printf(" %d",i);
   }
   printf("\n");
}

プログラム3

#include <stdio.h>
main()
{
   int a,b,c;

   a=5;
   b=++a;
   c=a++;
   printf("1:a=%d b=%d c=%d\n",a,b,c);

   a=5;b=5;
   c=(++a)+(++b);
   printf("2:a=%d b=%d c=%d\n",a,b,c);

   a=5;b=5;
   c=(a++)+(b++);
   printf("3:a=%d b=%d c=%d\n",a,b,c);

   a=5;b=5;
   c=(++a)+(b++);
   printf("4:a=%d b=%d c=%d\n",a,b,c);

   a=5;b=5;
   c=(++a)+(--b);
   printf("5:a=%d b=%d c=%d\n",a,b,c);
}

ヒントじゃ

博士

プログラム1は最後の「kazu*=5+3」に気をつけるのじゃぞ。
それは、kazu*(5+3)じゃぞ。

答え

プログラム1
1:kazu=1
2:kazu=2
3:kazu=12
4:kazu=6
5:kazu=48
プログラム2
0 1 2
0 2 4
10 7 4 1

プログラム3
1:a=7 b=6 c=6
2:a=6 b=6 c=12
3:a=6 b=6 c=10
4:a=6 b=6 c=11
5:a=6 b=4 c=10

博士「(^^♪」

どうじゃな?


ぷうさん「OK」

ん!グー!
(ホントはヒントをくれた所を間違えちゃったけど)

その二 if文の書き方へ

三日目 C言語らしい書き方 目次

二日目へ

ぷうさんの七日間戦争 三日目

四日目へ