制御フロー

スポンサーリンク

if 文

if (条件式1) 1
else if (条件式2) 2
...
else <sub>else</sub>

if 文の else-if 節,else 節はそれぞれ省略できます。

次のプログラムは,整数 a, b の大小を判定する例です。

#include <stdio.h>

int main(void)
{
    int a = 2, b = 3;

    if (a == b)
        printf("a = b\n");
    else if (a > b)
        printf("a > b\n");
    else
        printf("a < b\n");

    return 0;
}
a < b

複文

ブロック { ... } で 1 つ以上の文を囲んだものは,複文またはブロック文と呼ばれ,文法的には文の一種です。
if 文や for 文などで複数の文を記述したいときは,複文を用います。

if (a > b) {
    tmp = a;
    a = b;
    b = a;
}

switch 文

switch 文は case 定数: というラベルを持つ制御構文です。

switch (選択式) {
case 定数1:
    処理1
    break;
case 定数2:
    処理2
    break;
    ...
default:
    処理<sub>def</sub>
    break;
}

次のプログラムは,month の値によって処理を振り分ける例です。

```c
#include <stdio.h>

int main(void)
{
    int month = 7, days;

    switch (month) {
    case 4:
    case 6:
    case 9:
    case 11:
        days = 30;
        break;
    case 2:
        days = 28;
        break;
    default:
        days = 31;
        break;
    }

    printf("%d\n", days);
    return 0;
}
31

対応する case ラベルが存在しなければ,default: へ処理が移る (default 節は省略可能)。

for 文

for (初期化部; 条件式; 増分処理) 

次のコードは,for 文を使って 0 から 4 までの数を数え上げる例です。

#include <stdio.h>

int main(void)
{
    int i;

    for (i = 0; i < 5; i++)
        printf("%d\n", i);

    return 0;
}
0
1
2
3
4

while 文

while (条件式) 

次のコードは,while 文を使って 0 から 4 までの数を数え上げる例です。

i = 0;
while (i < 5)
    printf("%d\n", i++);

while 文の後判定バージョンとして,do-while 文も利用できます。

do  while (条件式);

break/continue 文

break 文はループを脱出するために用います。

for (i = 0; i < 5; i++) {
    if (i == 3) break;
    printf("%d\n", i);
}
0
1
2

continue 文はループ処理を 1 ステップ飛ばすために用います。

for (i = 0; i < 5; i++) {
    if (i == 3) continue;
    printf("%d\n", i);
}
0
1
2
4

goto 文

次のコードは,goto 文を使って 0 から 4 までの数を数え上げる例です。

i = 0;
Loop:
printf("%d\n", i);
if (i < 5) goto Loop;
スポンサーリンク