記事には広告を含む場合があります。

C言語入門講座

【C言語】while・do whileの使い方と条件式の書き方

2024年10月9日

おゆ

組み込み系プログラマとして5年働いていた元エンジニアです。得意言語はC言語とC++。本サイトでは学生および新人組み込み系プログラマに向けてプログラミング知識をわかりやすく解説しています。

whileの使い方を解説します。

forとの違いは、forは回数が決まっている繰り返し(ループ)処理に適しているのに対して、whileは外部からの入力値によってループを抜けるときに力を発揮します

記事の内容

  • whileを使った繰り返し処理の書き方
  • do whileを使った繰り返し処理の書き方
  • while文に2つ以上の条件式を書く方法

whileを使った繰り返し処理の書き方

whileの使い方

while(条件式)
{
    処理;
}

例1:

#include <stdio.h>
void main()
{
    int i=0;
    while(i<3)
    {
        printf("i=%d\n",i);
        i=i+1;
    }
}

実行結果

i=0
i=1
i=2

while文ではカッコ内の条件式が成り立っている間だけ繰り返し処理を実行します

始めはi=0なので条件式i<3に当てはまります。

そのため中カッコ内の処理が実行され、i=0と出力されます。

同時にi=i+1が実行されi=1となります。

3回目のループではi=2が出力された後にi=3となり、条件式に当てはまらないためwhile文から抜けます。

始めから条件式に当てはまらなかった場合、while文内の処理は一度も実行されません。

whileが主に使われるのは外部からの入力値によってループを抜けるときです

例2:

#include <stdio.h>
void main()
{
    char c='0';
    printf("input number 1~9\n");
    while(c!='9')
    {
        c=getchar(); //キーボードから入力された値をcに代入
    }
    printf("Correct!\n");
}

実行結果

1~8入力時:(出力なし、次のループへ)
9入力時:Correct!

このプログラムでは9が入力されたときだけループを抜け、画面にCorrect!と表示します。

それ以外の数字が入力された場合は次のループへ入り、入力を待ちます。

do whileを使った繰り返し処理の書き方

do whileの使い方

do
{
    処理;
}while(条件式);

例:

#include <stdio.h>
void main()
{
    int i=0;
    while(i<3)
    {
        printf("i=%d\n",i);
        i=i+1;
    }
}

実行結果

i=0
i=1
i=2

whileとの違いは条件判定が最後に来ている点です。

whileでは一度も処理を実行せずに終了することもできますが、do while文は必ず1回は処理を実行するコードが書けます

do whileもwhileと同様、外部からの入力値によってループを抜けるときに主に使われます。

while文に2つ以上の条件式を書く方法

while文の条件式に2つ以上の条件を詰め込みたいときには&&または||を使います。

AかつBの条件式の書き方

条件Aと条件Bが同時に成り立つ場合を真としたいときは&&を使って以下のように書きます。

例:

#include <stdio.h>
void main()
{
    int i=0, j=0;
    while((j==0) && (i<5))
    {
        printf("i=%d\n",i);
        i=i+1;
        j=j+1;
    }
}

実行結果

i=0

AまたはBの条件式の書き方

条件Aか条件Bどちらかが成り立つ場合を真としたいときは||を使って以下のように書きます。

例:

#include <stdio.h>
void main()
{
    int i=0, j=0;
    while((j==0) || (i<3))
    {
        printf("i=%d\n",i);
        i=i+1;
        j=j+1;
    }
}

実行結果

i=0
i=1
i=2

3つ以上の条件式の書き方

3つ以上の条件を組み合わせたいときも&&または||で繋ぎます。

&&と||を同時に使った場合、&&が優先されます。

例:

#include <stdio.h>
void main()
{
    int i=0, j=0;
    while((j==0) || (i<3) && (i>0))
    {
        printf("i=%d\n",i);
        i=i+1;
        j=j+1;
    }
}

実行結果

i=0
i=1
i=2

まとめ:forとwhileの違いを理解して使い分けよう

C言語で繰り返し処理を実現するにはfor、while、do whileの3種類の書き方があります。

それぞれの使い時は以下です。

  • for:繰り返し回数が決まっている場合
  • while:外部入力によってループ回数を変えたい場合
  • do while:whileを使いたいかつ最初の1ループ目は実行したい場合

whileは繰り返し回数が決まっている場合でも使えますが、forとwhileが入り乱れているとコードが見にくくなるので、その場合はforに統一した方がいいです。

C言語で行き詰まったら…

C言語・C++がわからない時に質問できるサイト・サービス5選

C言語を独学で勉強しているけど内容がイマイチわからない。もはや何がわからないのかもわからない。 C++のエラーが解決できない。ググってもわからない。わかる人に解説してほしい。 こんなお悩みにお答えしま ...

続きを見る

ブログランキング参加中。クリックしてもらえると励みになります。

ブログランキング・にほんブログ村へ

-C言語入門講座