第八章 do while,無限ループ


do while                                                                                                                                 
第三章で勉強した while は、まず条件の真偽を確かめて、真なら { } 内の処理を行いました。     
do while では、まずループを実行した後、条件による真偽を確かめます。

つまり、必ず一回はループが実行されます。


<do while と while>
#include<stdio.h>
main()
{
    int a,b;
    a=b=7;

  /* do while */
    do
    {
        a++;
    }while(a<5);
    printf("do while:%d\n",a);

  /* while */
    while(b<5)
    {
        b++;
    }
    printf("while:%d\n",b);
}
<実行結果>
do while:8
while:7

<実行結果>を見たらわかると思いますが、do while の方は一度ループに入っており、
while は一度もループに入っていません。


do while は while や for に比べあまり使われませんが、do while の方が良いこともあるので、
こんなのもあったなぁ。。ってくらいに覚えておけばいいと思います。

無限ループ
                                                                                                                          
第三章,第五章で whilefor のループは勉強しました。

まず、while について
while (条件)
   繰り返したい処理
条件が真である間、繰り返した処理を行う。条件が偽になると繰り返し処理を終了する。           
というものでした。

ここで、条件に真偽という言葉を使ったのには理由があります。
while の条件は、0 でなければ真であり、0 であれば偽になるのです。

つまり、次のようなプログラムは無限ループになります。
while (1)
   ;
条件が 1 で、0 ではないので、while は終了しません。


for は while と同様に繰り返し処理を行うときに用いました。
for ( 式1 ; 式2 ; 式3 )
   繰り返したい処理
   式1・・・初期値を代入。
   式2・・・繰り返しの条件。
   式3・・・繰り返し処理を行うごとに実行される式。

これを while に書き直すと次のようになります。
式1;
while (式2)
{
   繰り返したい処理
   式3;
}
for の式1,式3は while に書き直したものを見たら普通の計算式なので、
for の式1,式3に書いてなくてもよいことがわかります。

for の式2は while の条件と同様に、0 と 0 以外の値で真偽が判定されます。
一つだけ異なるのは、for では式2も省略することができ、
省略した場合、永久に真とみなされます。

つまり、次のようなプログラムで無限ループになります。
for ( ; ; )
   ;
または、
for ( ; 1 ; )
   ;
ちなみに無限ループの止め方は、Ctrl と C の同時押しです。

<前に戻る  |目次|  次へ進む>