C言語のwhile文の使い方4つ

495, 2022-06-15

目次

C言語のwhile文の使い方3選

C言語ではループ文の1つにwhile文があります。
この記事ではwhile文の使い方を解説します。

具体的には↓を解説します。

  • カウント変数をカウントしてループする

  • 無限ループ

  • ループ内でbreakする

  • ループ内でcontinueする

この記事を読めばC言語のwhile文はばっちりです。

関連記事

while文の構造

C言語のwhile文は↓のような構造になっています。

while (条件式) {
    処理
}

whileと書いてその隣にカッコ(())を書きます。
そしてそのカッコの中に条件式を書きます。
処理の部分には計算式や他の文を書くことができます。

条件式が真のあいだブレース({})の中に書いた処理が繰り返し実行されます。
ちなみにブレースは省略することもできます。

while (条件式)
    処理(1つのみ繰り返し)

ブレースを付けない場合はfor文やif文と同様にカッコの直後にある1つの処理だけが繰り返し実行されます。

実際のC言語のコードを書くと↓のようになります。

    while (1 + 1) {
        printf("loop!\n");
    }

↑のコードは全く何の意味もないコードですが雰囲気は伝わると思います。

カウント変数をカウントしてループする

while文でカウント変数をカウントする方法です。
while文にはfor文のように初期化や更新部分がありません。
ですのでこれらはwhile文の外と中で行う必要があります。

たとえば↓のようにです。

#include <stdio.h>

int main(void) {
    int i = 0;

    while (i < 4) {
        printf("%d\n", i);
        i += 1;
    }

    return 0;
}

出力結果↓。

0
1
2
3

↑の場合、iがカウント変数です。
while文の外で0に初期化しています。
そしてwhile文の条件式ではi < 4とやって判定しています。
この判定ではiが4より下のあいだ真になります。
iが4以上になったら偽になるのでループが終了します。

printf(%d\n, i);でカウント変数を出力しています。
そのあとにi += 1;でカウント変数をインクリメントしています。

このwhile文はfor文で書くと↓のようになります。

#include <stdio.h>

int main(void) {
    for (int i = 0; i < 4; i += 1) {
        printf("%d\n", i);
    }

    return 0;
}

↑のfor文では先ほどのwhile文と出力結果は同じになります。
さっきのwhile文は↓のように書くこともできます。

#include <stdio.h>

int main(void) {
    int i = 0;

    while (i++ < 4) {
        printf("%d\n", i);
    }

    return 0;
}

出力結果↓。

1
2
3
4

条件式の中でカウント変数のインクリメントを行っています。
これだと変数のカウントが手軽にできますが、この方法には注意が必要です。
↑の出力結果を見てみるとわかりますが、出力される値が「1」からになってます。

これはカウント変数のインクリメント後にprintfで出力しているせいです。
0を期待するコードを書いたら意図しない動作になることがありますので気を付けましょう。

無限ループ

while文で無限ループも作れます。
無限ループとは延々とループ処理をするループです。
これはゲームなど色々なプログラムで使われる開発者には人気のあるループです。

↓のように書きます。

#include <stdio.h>

int main(void) {
    while (1) {
        printf("loop!\n");
    }

    return 0;
}

↑のコードを実行するとビジー(CPUを使う)な無限ループになります。
実行を終了したい場合は「Ctrl + C」などを押してください。

ループ内でbreakする

while文内でbreak文を使うとループの途中でループから脱出できます。
たとえばカウント変数をカウントしてそれが4になったらループから抜ける、という処理を書くとします。
その場合は↓のようなコードになります。

#include <stdio.h>

int main(void) {
    int i = 0;

    while (1) {
        if (i == 4) {
            break;
        }
        printf("%d\n", i);
        i += 1;
    }

    return 0;
}

出力結果↓。

0
1
2
3

↑のコードの場合、カウント変数iが4になったらif文が真になってbreak文が実行されます。
iが4より下のあいだはprintf()が実行されてiがインクリメントされます。

ループ内でcontinueする

while文内で処理をスキップしたい場合はcontinue文を使います。
ループの中でcontinueを実行するとそれ以降の処理がスキップされます。

#include <stdio.h>

int main(void) {
    int i = 0;

    while (i++ < 4) {
        if (i == 2) {
            continue;
        }

        printf("%d\n", i);
    }

    return 0;
}

出力結果↓。

1
3
4

カウント変数が2になったらif文が真になりcontinue文が実行されます。
continue文が実行されるとそれ以降の処理、つまりprintf()がスキップされます。
スキップ後はループの条件式に戻ります。

おわりに

今回はC言語のwhile文について解説しました。
C言語のwhile文はfor文と並んでよく使われるループ文です。
押さえておけばC言語のプログラミングがはかどるでしょう。

(^ _ ^)

while文でループ処理

(・ v ・)

回る回る



この記事のアンケートを送信する