サイトマップ / C言語講座出入り口総目次目次:流れの制御>whileループ

青い直線

whileループ

青い直線

[forループ(2)]←このソース→[if ( ) - else文(1) 、関係演算子]

/* whileループ */

/* whileループは下記のような形をしています。

    while ( 式1 ) {
        式2;
        式3;
        - - - - -
    }

式1を評価し、真であれば{ }の中の式が実行されます。偽であれば実行されないので、{ }の中の式が一度も実行されないこともあり得ます。{ }の中の式が1つであれば、{ }は省略できます。

whileループの例

例1:9から1の数字が表示される。

    int n = 10;

    while (n--)
        printf("n = %d\n", n);

n の初期値は10です。最初にwhile ( )の中で n が評価されます。0ではないのでデクリメントされた後、次の行の式が実行されます。n の値はデクリメント演算子により1ずつ減少していき、0になった時実行が停止します。この例と同等のものをfor ループで書くと、次のようになります。

    for (n = 9; n > 0;  n--)
        printf("n = %d\n", n);

例2:10から1の数字が表示される。while ( )の中は1なので、常に真となり無限ループとなります。そこで、n が0となった時、break 文でループから抜けます。

    int n = 10;
    while (1) {
        printf("n = %d\n", n);
        n--;
        if (n == 0)
            break;
    }

例3:1から100までの合計を求める。n の初期値は1です。n の値が100を越えると、while ( )の中の式は偽となりループから抜けます。ループの中の total = total + n; は、total + n の値を total に代入するということです。

    int n = 1;
    int total = 0;

    while (n <= 100) {
        total = total + n;
        n++;
    }
    printf("total = %d\n", total);

例4:Hello! と表示される。str[ ]の[ ]の中には、文字列の文字の数 +1 が入りますが添字は省略可能です。コンパイラが数えてくれます。while ( )の中の != は、関係演算子で、右辺と左辺が等しくなければ真となります。文字列の終末に達するまで、1文字ずつ表示します。

    char str[  ] = "Hello!";
    int i = 0;

    while (str[i] != '\0' ) {
        putchar(str[i]);
        i++;
    }

Cでは文字列は、'\0'という特別な値で終わります。char str[ ] = "Hello!"; という宣言は、下記のコードと同等です。

    char str[ 7 ];

    str[ 0 ] = 'H';
    str[ 1 ] = 'e';
    str[ 2 ] = 'l';
    str[ 3 ] = 'l';
    str[ 4 ] = 'o';
    str[ 5 ] = '!';
    str[ 6 ] = '\0';

例5:アルファベット小文字が a から z まで表示される。

    char c = 'a';

    while (c <= 'z')
        putchar(c++);

*/

/* ここからソースプログラム */

#include <stdio.h>

void main(void);

void main(void)
{
        int i = 0;
        char str[  ] = "Hello!";        /* 表示する文字列 */

        while (str[i] != '\0') {        /* 文字列の末尾まで */
            putchar(str[i]);            /* 一文字ずつ表示 */
            i++;
        }
}

/* ここまでソースプログラム */

[for ループ(2)]←このソース→[if ( ) - else文(1) 、関係演算子]

青い直線

/* (C) 2000- YFプロ. All Rights Reserved. */    提供:C言語講座−それ自体コンパイルできる教材を使った講座です−

C言語講座出入り口総目次目次:流れの制御>whileループ