第10章 制御文
10.1 概要
省略
 
10.2 if文
/* if文の機能 */
省略
/* 被制御文の処理とブロック(複合文) */
省略
/* 条件式の簡易記述 */
if (dt) // if(dt!=0)と同じ
if (!dt) // if(dt==0)と同じ
/* else if文 */
省略
/* if条件部で変数宣言する */
省略
 
10.3 switch文
/* switch文の機能 */
省略
/* 条件式の記述 */
「switch(条件)」の部分に整数を結果とするものを書きます。
たとえば次のようになります。
int n;
double f;
switch(n) // nは整数型なので正しい
switch(f) // fは非整数型なので誤り
switch(myfunc(n)) // myfunc()関数が整数を返すなら正しい
/* caseの記述 */
このcase句には整数定数式を書きます。
整数の定数、文字定数、それらの定数を使った式などを書くことができます。
コンパイル時に値を決定していることが必要で、変数名を書くことはできません。
case 5: // 正しい(整数の定数)
case 'A': // 正しい(文字定数)
case 'A'+20: // 正しい(定数の式)
case 5.6: // 誤り。整数でない
case dt: // 誤り。定数でない(変数dtの値は実行時でないと決定しない)
case "ABC": // 誤り。文字列は使えない
case dt>10: // 誤り。定数でない
/* 複数ラベルを使う */
switch (n) {
case 2:
case 6:
case 8:
cout << "2か5か8です。n";
break;
}
/* defaultの記述 */
該当するcase句がないときに「それ以外の処理」を行ないたいときは、
default:
と書いて、そこに実行文を記述します。
もし「それ以外の処理」が不要なら、このdefault句は省略できます。
/* 処理の打ち切り */
どれかのcase句から開始された処理は、
break文に出会うか、switch文の終端に出会うと終了します。
また正しい記述であれば、
continue文 return文
でも、処理の流れを変えることができます。
このbreak文などの処理打ち切り記述は必須ではありません。
意図的に記述しないのは自由です。
breakがないと、次のcase句に流れ込みます。
caseは単なるラベル機能なので、流入をさまたげることはありません。
次に例を示します。
switch (n) {
case 1:
cout << "とても";
case 2:
cout << "優秀n";
case 3:
cout << "普通n";
break;
default:
cout << "該当せずn";
}
とても優秀 // nが1の場合
優秀 // nが2の場合
/* switch文内で変数宣言する */
switch (int a = func(b)) {
case 1: // 変数aを利用できる
case 2: // 変数aを利用出来る
} // switchブロック外では変数aを利用できない
 
10.4 while文
/* while文の機能 */
省略
/* 本体を空文にする */
char s1[10], s2[10] = "ABCDE", *p1 = s1, *p2 = s2;
while (*p1++ = *p2++)
;
cout << s1 << 'n'; // 出力:ABCDE
/* while文による無限ループ */
while (true) { // while (1)でもよい
if (…) break; // 何かの条件でループ終了する
}
/* while条件部で変数宣言する */
省略
 
10.5 for文
/* for文の機能 */
省略
/* 指定回数反復処理 */
省略
/* while文的反復処理 */
10_10-5
/* for文内で変数宣言する */
省略
 
10.6 do-while文
/* do-while文の機能 */
省略
/* {}を省略しない */
省略
/* ';'が必要 */
省略
 
10.7 break文
省略
 
10.8 continue文
10_10-8
 
10.9 goto文とラベル
void myfunc() {
cout << "aaaan";
goto asoko;
cout << "bbbbn";
asoko:
cout << "ccccn";
}
実行結果
aaaa
cccc
 
10.10 return文
省略