3.5 do文
遅延評価型の繰り返し処理
while は繰り返すべき文を実行する前に、条件式を評価して繰り返し処理を続行するかどうか判断していました。しかし、これとは逆に文を実行したあとに条件式を評価する do 文というものもあります。
do 文 while (条件式);
繰り返し処理の対象となる文を先に実行するということ以外は while 文と基本的に同じです。while 文は、式を評価してからループを行うため、最初の時点で評価が偽であれば、文を一度も実行せずに素通りしてしまいます。たとえ評価がどのような結果であれ、最低でも一度は実行してほしい場合に do 文は威力を発揮するでしょう。
#include <stdio.h> int main() { int iCount = 1 , iMax; printf("繰り返す回数を入力してください>"); scanf("%d" , &iMax); do { printf("%d回目のループです\n" , iCount++); } while (iCount <= iMax); return 0; }
コード1は最初に繰り返すべき回数を入力し、指定された値を元に do 文で繰り返し処理を行います。 しかし、while 文と大きく異なる点として、iCount <= iMax が成立しなくても(偽だとしても)、必ず一度は文を実行するということです。入力された値が負数や 0 だったとしても、do は必ず文を1度は実行します。これは、式の評価が文を実行した後に行われているからです。
しかし、よほど特別なケースではない限り do 文を使うことはありません。筆者の経験では、数万行に及ぶアプリケーション・システムを設計したときも、積極的に使う意思がなければ do 文を使用する必要に迫られたことはありません。ですが、他人が書いたソースを読むときに do 文が出てくることは十分考えられますし、アルゴリズムによっては do 文を使った方がスマートに書けるということもあるため、覚えておく必要があります。