do-while文

 C言語での繰り返し処理について、ここまでfor文とwhile文を説明してきました。今回は、do文(do - while文)を取り上げます。基本的にはdo文と呼んで良いかと思いますが一般的にはdo-while文と呼ばれているものです。というのも、whileという単語が使われているからです。

 論より証拠、今回も早速、do-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;
    
    do {
        printf("%d\n", array[i]);
        i++;
    } while (array[i] > 0);
    
    return 0;
}

 Tips:while()の後のセミコロンを忘れないようにしましょう。

 前回のプログラムをdo-while文で書き直しただけなので、このプログラムの実行結果は、前回と同じく、

2
5
9

 このように出力されます。

 先述のとおり、whileという単語が用いられているため、性質としてはdo-while文とwhile文はほとんど同じものと思って頂いて構いません。ただ、大きく違うのは、whileが{}の後にあり、条件式も同じく{}の後にあるという点。do-while文は条件の判定が{}内の処理が終わった後にされるのです。while文では処理の前に条件判定が行われます。

 これが意味するものを、次のプログラムと、

#include <stdio.h>

int main(int argc, const char * argv[])
{
    
    // insert code here...
    while (0) {
        printf("Hello, World!");
    }
    
    return 0;
}

 このプログラムを実行して結果を比較してみて下さい。

#include <stdio.h>

int main(int argc, const char * argv[])
{
    
    // insert code here...
    do {
        printf("Hello, World!");
    } while (0);
    
    return 0;
}

 どちらもwhile()の括弧の中、つまり条件判定は0(偽)となっているので、繰り返しの処理から抜けます。前者のwhile文では「Hello, World!」が表示されなかったのに対し、後者のdo-while文では1度だけ「Hello, World!」が表示されたかと思います。つまり、{}の前で判定するか後ろで判定するかによって、繰り返し処理が全く発生しない可能性がある(while文)か、必ず1回は発生する(do-while文)かという違いがwhile文とdo-while文にはあります。作るプログラムの性質によって使い分けられるものですから、double型かfloat型かというのと同様に、細かく気にする必要はありません。

 尚、while文と同様、「do{} while(1);」と書いたら無限ループになります。

■スポンサーリンク

このページの先頭へ