第六章 if else


if else                                                                                                                     
「もし〜ならば、〜してください。そうでなければ、〜してください」
というように、ある条件により異なった処理をさせることができます。

while,for などと同様、{ } 内の処理が一行の場合、{ } を省略することもできます。
また、else を省略して if だけにすることもできます。

もし、2分岐だけでなく多数の分岐にしたいときは、
      if (式) ・・・
      else if (式) ・・・
      else if (式) ・・・
      else ・・・
というようにすることもできます。この場合も else を省略して if だけにすることも可能です。

<if else>
#include<stdio.h>
main()
{
    int c;
    printf("1+2=?\n");
    c=getchar();
    if(c=='3')   /* もしcが3ならば、次の処理をしてくださいの意味 */
    {
        printf("正解です\n");
    }
    else         /* そうでなければ次の処理をしてくださいの意味 */
    {
        printf("不正解です\n");
    }
}
<実行結果>
1+2=?
3
正解です

実行結果では、1+2=? に対して、3 と正解を入力しています。

それでは、プログラムを詳しくみてみましょう。

まず、printf で 1+2=? と画面に表示させています。

次に、入力される1文字を得るために getchar を用いています。
今回は 3 を入力したため、c は 3 を表します。

if(c=='3') で、今回は c が 3 を表すので、この { } 内の処理を実行します。

printf で、「正解です」と表示させています。

if を実行したので、else の { } 内にある処理はおこなわれません。

ここで、上の解説は“3 を表す”という微妙な表現を使ってますが、
実はコンピュータで扱われる文字は、実際には文字ではないのです。

コンピュータは基本的に 0 か 1 の2つの値しか扱えません。
ですから、コンピュータにおける文字は、文字そのものではなく、                                 
1文字ずつ番号が与えられているのです。

文字に与えられている番号                                                                                            
何番が、どの文字に対応しているのかみてみましょう。
次のプログラムを見てください。

<文字に与えられている番号>
#include<stdio.h>
main()
{
    printf("%d\n",'a');
}
<実行結果>
97

上のプログラムは、文字 a を数字として画面に表示させています。
この結果から、a が 97 に対応していることがわかると思います。
当然、' ' 内の a を b に変えると、98 になります。

今まで、" " で囲まれたものと ' ' で囲まれたものの違いを

    " " は文字列で、最後に必ず \0 が付け加えられる。
    ' ' は文字で、\0 は付け加えられない。


くらいのことしか、説明していませんでしたが、
今回のプログラムのように、文字に与えられている番号を扱える点でも、
文字列 " " と文字 ' ' は違います。

確かに、文字が数値なので文字列も数値なのですが、
文字は、数値を用いてそれに対応した文字を扱うことが可能ですが、文字列はできません。

当然と言えば当然なのですが、文字列も数値に対応させてしまうと、
例えば4文字の文字列だけでも、24種類の数値を対応させていなければなりません。
文字は、英数字だけでも36個もあるので、数値に対応させるのは現実的に不可能です。

それでは、次のプログラムをみてください。

<数値を用いて文字を扱う>
#include<stdio.h>
main()
{
    printf("%c\n",97);
}
<実行結果>
a

上のプログラムは、97 という数値を、文字として表示させています。
すると、実行結果は a という文字になっています。

ちなみに、ここでは載せませんが、
アスキーコード表という、このような数字と文字との関係をまとめた表があります。

<前に戻る  |目次|  次へ進む>