サイトマップ / C言語講座>出入り口>総目次>目次:流れの制御>whileループ
[forループ(2)]←このソース→[if ( ) - else文(1) 、関係演算子]
/* whileループは下記のような形をしています。
while ( 式1 ) {
式2;
式3;
- - - - -
}
式1を評価し、真であれば{ }の中の式が実行されます。偽であれば実行されないので、{ }の中の式が一度も実行されないこともあり得ます。{ }の中の式が1つであれば、{ }は省略できます。
例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ループ