★基本制御文(While1)★
繰り返すという命令は数種類ありますが、最初は「while」という命令から始めます。
「while」とは(〜の間)という意味で、Cでは(〜の間、繰り返す)ということになります。
もう少し詳しく書くと、「ある条件が成り立っている間繰り返す」となります。
まずは文法を見てみましょう。
・while文の文法
while( 条件 ) { 繰り返したい処理 }
「()」丸括弧内の条件が成り立っている間、「{}」中括弧内の処理を繰り返す。
逆の説明をすると、丸カッコ内の条件が成り立たなくなったら、繰り返しを終わる。
ここでの「条件」とは、if文の「条件」と同じです。
これを頭に置いて、サンプルを見てください。
<sample program 028-01>
#include <stdio.h>
int main( void )
{
while(1) {
printf( "Hello C World\n" );
}
return 0;
}
|
<実行結果 VC++ Express Edition>
Hello C World
Hello C World
Hello C World
Hello C World
Hello C World
.
.
.
延々と繰り返し
while文の「条件」は「1」になっています。
if文の時に説明しましたが、「条件」は「0以外であれば成立」します。
while文は「条件が成立している間繰り返す」という命令ですから、この条件は「成立しっぱなし」となります。
不成立になることがありませんから、延々と中括弧内のprintf文を繰り返す訳です。
繰り返し処理のことを「ループ」と言いますので、延々と終わらない繰り返しを「無限ループ」といいます。
実際にプログラムを打って試した場合は、×ボタンを押して実行ウィンドウを閉じるか、
「Ctrlキーを押しながらCキーを押す」ことで、プログラムを停止してください。
では、もう一つのサンプルを見てみましょう。
<sample program 028-02>
#include <stdio.h>
int main( void )
{
while(0) {
printf( "Hello C World\n" );
}
return 0;
}
|
<実行結果 VC++ Express Edition>
続行するには何かキーを押してください・・・
このサンプルでは、「条件」が「0」となっています。
while文は条件が不成立の場合繰り返しを行いません。
いきなり不成立ですから、中括弧内の処理はまったく行われず、returnの所へ処理が飛びます。
このように、成立している場合は繰り返し、不成立の場合は繰り返さないということが基本です。
実際に実行する場合に「警告レベル」を4にしている方は気づいたと思いますが、コンパイル時に下記のメッセージが出ているはずです。
main.cpp(7) : warning C4127: 条件式が定数です。
これは非常に重要なメッセージです。
「条件式」とは上に書いた条件のことです。
「定数」とは定まった数(変更できない数)です。
つまり、条件が変わることが無いから「無限に繰り返す」か「1度も繰り返さない」かどちらかになっているというメッセージです。
「警告」も修正しなければならないものですから何とか直したいところですが、これを取り除くには新しい命令が必要なので、今のところは放置しておきます。