while文

 C言語での繰り返し処理について解説しています。前回は、繰り返し処理の基礎となるfor文について説明しました。今回は、while文を取り上げます。while文とfor文に明確な違いはありません(ほとんどの場合が双方に置き換え可能)ですが、あらかじめ何回繰り返すかが決まっていない場合、例えば配列や変数の内容によって処理を終えるか決めたい場合は、while文の方がよく使われます。

 今回も早速、while文を用いた下のプログラムを見て下さい。以下のソースを書いて実行してみましょう。

#include <stdio.h>

int main(int argc, const char * argv[])
{
    
    // insert code here...
    int i = 0;
    int array[5];
    array[0] = 2;
    array[1] = 5;
    array[2] = 9;
    array[3] = 0;
    array[4] = 13;
    
    while(array[i] > 0) {
        printf("%d\n", array[i]);
        i++;
    }
    
    return 0;
}

 このプログラムの結果は、以下のとおりです。

2
5
9

 このプログラムは、arrayの要素としては5つありますが、while文の括弧の中で「array[i] > 0」という条件を設定しています。for文と同じく、条件を満たしている間だけ繰り返しの処理をしますので、iが3になったとき、array[3]の中身は0であり、条件を満たさないので、繰り返し処理は終了となります。よって、array[4]まで値がありますが、array[0]から[2]までで表示する処理は終わります。

 ところで、while文では、以下のような書き方が出来ます。

    while(1) {
        // 何らかの処理を行う
        
    }

 while文の条件が1、つまり、ずっと真となるので、永久的に繰り返し処理が行われます。このようなものを無限ループと呼んでいます。意図的に無限ループにして処理を行う場合もよくありますが、意図しない無限ループは、永久的に処理が終わらなかったり、存在しない変数や配列にアクセスしてしまって重大なエラーの原因になったりするので注意して下さい。意図的な無限ループの場合、途中で何らかの条件を満たしたらループを抜けるという処理を入れることが必須です。途中でループを抜けることについては、今後の記事でご紹介します。

■スポンサーリンク

このページの先頭へ