サイトマップ / 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ループ