if (式)
式が真の時に実行する処理
else
式が偽の時に実行する処理
if-else文は、「もし・・・が・・・ならば、・・・をする。でもって、そうじゃない時は・・・をする。」といった判定を行いたい時に使います。もちろん以下のように、「そうじゃない時」の後に、さらに判定を行うことも可能です。
if(式)
処理
else if(式)
処理
else if(式)
処理
else
処理
それと、式が真の時の処理が複数の文である場合は、{}で囲んでブロック化する必要があります。そのことはif文だけではなく、この後で学ぶ繰り返し文でも言えることです。
if(a==10){
b=1;
c+=3;
d=b+c;
}
みたいに、複数の文といっても単純な式などであれば、if(a==10)b=1,c+=3,d=b+c;といった具合に、カンマで連結して1行にまとめることができます。これは私が好んで使う手だったりします。(^_^)
if(a==10)b=1;c+=3;d=b+c;と書いた場合、a==10が真の時に処理されるのは、あくまでb=1です。その後にあるc+=3とd=b+cは、a==10が真偽のどちらであろうと、必ず処理されてしまいます。つまり、
if(a==10)b=1; c+=3; d=b+c;だということです。BASICでいうところの、
if a=10 then b=1:c=c+3:d=b+cと誤解しないで下さい。
因みに、
c+=3;は、
c=c+3;と同じ意味です。
if-else文の詳細についてはK&R2第3章3.2、3.3を参照して下さい。
switch(式){
case 定数または定数式:処理終了後switchから抜け出す時はbreakまたはreturn文を用いる
case 定数または定数式:処理終了後switchから抜け出す時はbreakまたはreturn文を用いる
・
・
・
default:デフォルトの処理breakを置いておく
}
例えば、
if(a==1)
printf("勇者は、ちくっと痛みを感じたゾ。\n");
else if(a==50)
printf("勇者は冷や汗タラリもんのダメージを与えられた。\n");
else if(a==99)
printf("勇者、瀕死っス。\n");
else
printf("勇者はさくっとかわした。ざまあみろっと。\n");
みたいに、判定する式がすべて「a==何か」のように同じケースで統一されている場合、switch文を使うことでプログラムをスマートにすることができます。っていうか、switch文が使えるのに、if-else文を使うのはちょっぴり恥ずかしい気がします。上記if-else文をswitch文にすると以下のようになります。
switch(a){
case 1:printf("勇者は、ちくっと痛みを感じたゾ。\n");
break;
case 50:printf("勇者は冷や汗タラリもんのダメージを与えられた。\n");
break;
case 99:printf("勇者、瀕死っス。\n");
break;
default:printf("勇者はさくっとかわした。ざまあみろっと。\n");
break;
}
switch文についての詳細は、K&R2第3章3.4を参照して下さい。
while(式)
式が真の時に実行する処理
whileは、()の中の式が真である限り、ある処理を繰り返して実行させたい時に使います。このwhileや次のdo-while、そしてforは、処理を繰り返す(ループさせる)時に用いられることから、繰り返し文と呼ばれています。
do
式が真の時に実行する処理
while(式);
さっきのwhileは、初めから式が偽になっていると、ループ時の処理が一度も行われません。それに対してdo-whileは、式による判定が行われる前に、一度ループ時の処理を通過します。つまり、式の真偽を問わず、最低でも1回はループ時の処理が行われるというのがdo-whileの特徴です。
for(式1初期値を設定;式2繰り返し条件;式3文を実行した後の再初期化式)
式2が真の時に実行する処理
forを使う際、以下のようなプログラムは無限ループに陥ってしまうので注意して下さい。
int i; for(i=0;i<40000;i++) 実行する処理;なぜかというと、ループカウンタである変数iのデータ型がint型であるからです。int型の上限は32767です(LSI C-86 Ver. 3.30c試食版などでは)から、繰り返し条件式(i<40000)は真であり続ける、つまり処理を永遠に繰り返す結果となってしまうのです。
おっと、もう1つ。
ここで紹介したforやif-else、switch、while、do-whileはあくまで文です。関数ではありませんので、for関数とか言わないように!
つづく。