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 と正解を入力しています。
それでは、プログラムを詳しくみてみましょう。
まず、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');
} |
<実行結果>
上のプログラムは、文字 a を数字として画面に表示させています。
この結果から、a が 97 に対応していることがわかると思います。
当然、' ' 内の a を b に変えると、98 になります。
今まで、" " で囲まれたものと ' ' で囲まれたものの違いを
" " は文字列で、最後に必ず \0 が付け加えられる。
' ' は文字で、\0 は付け加えられない。
くらいのことしか、説明していませんでしたが、
今回のプログラムのように、文字に与えられている番号を扱える点でも、
文字列 " " と文字 ' ' は違います。
確かに、文字が数値なので文字列も数値なのですが、
文字は、数値を用いてそれに対応した文字を扱うことが可能ですが、文字列はできません。
当然と言えば当然なのですが、文字列も数値に対応させてしまうと、
例えば4文字の文字列だけでも、24種類の数値を対応させていなければなりません。
文字は、英数字だけでも36個もあるので、数値に対応させるのは現実的に不可能です。
それでは、次のプログラムをみてください。
<数値を用いて文字を扱う>
#include<stdio.h>
main()
{
printf("%c\n",97);
} |
<実行結果>
上のプログラムは、97 という数値を、文字として表示させています。
すると、実行結果は a という文字になっています。
ちなみに、ここでは載せませんが、
アスキーコード表という、このような数字と文字との関係をまとめた表があります。 |
|