書式
if(制御式)文; |
以下のようなプログラムが,この構文の使用例である.
if(a<=10) printf("aは,10以下です\n");
書式
if(制御式){
文1;
文2;
文3;
}
|
以下のようなプログラムが,この構文の使用例である.
if(0<=a && a<=10){
printf("aは,0以上\n");
printf("かつ\n");
printf("aは,10以下です\n");
}
-4pt
書式
if(制御式){
文1;
文2;
文3;
}else{
文4;
文5;
文6;
}
|
以下のようなプログラムが,この構文の使用例である.
if(0<=a && a<=10){
printf("aは,0以上\n");
printf("かつ\n");
printf("aは,10以下です\n");
}else{
printf("aは,0未満\n");
printf("または\n");
printf("aは,10より大きい\n");
}
書式
if(制御式1){
文1;
文2;
}else if(制御式2){
文3;
文4;
}else if(制御式3){
文5;
文6;
}else{
文7;
文8;
}
|
この構文のフローチャートを,図9に示す.このフローチャートを見てわか るように,最初に真となった制御式に続くブロック内が実行される.それ以降,真になっ ても,そのブロックは実行されない.どの制御式も真にならない場合,最後のelse のブロックが実行される.即ち,実行されるブロックは1個のみである.else ifの 段数をいくらでも増やせることは,言うまでもない.
また,elseが無い構文も許される.この場合,真となる制御式がない場合,どの ブロックも実行されず,この構文から抜ける.
つぎのプログラムが,この構文の使用例である.
if(a < 0){
printf("aは,0以下\n");
}else if (0 <= a && a < 1){
printf("aは,0以上\n");
printf("かつ\n");
printf("aは,1未満\n");
}else if (1 <= a && a < 10){
printf("aは,1以上\n");
printf("かつ\n");
printf("aは,10未満\n");
}else{
printf("aは,10以上\n");
}
この構文のフローチャートを,図10に示す.これは,式の値により,それ にマッチしたブロック4が実行される.もし,どれもマッチしなければ,defaultが実行される. default文は無くてもよいが,その場合はどのブロックも実行されない場合がある.
文の集まりのブロックの最後には,bread文を書く.この break 文が無いと,マッチしたブロック以降の他のブロックも実行される.コード ブロックを表す中括弧{ }が無いので,こうすることになっている.この break文でswitch文の終わりを示す中括弧(})から抜け出す.
式や定数式の値の型は,intまたはcharでなくてはならない.定数式の方は, コンパイル時に,評価できなくてはならない.
caseの後の定数式は,ラベルである.ラベルの後は,コロン(:)をつける.文 の終わりを示すセミコロン(;)ではない.
つぎのプログラムが,この構文の使用例である.
switch(a){
case 1:
printf("あなたは,1と答えました.\n");
printf("不正解です.\n");
break;
case 2:
printf("あなたは,2と答えました.\n");
printf("不正解です.\n");
break;
case 5:
printf("あなたは,5と答えました.\n");
printf("正解です\n");
break;
default:
printf("質問にまじめに答えろ.\n");
}