CとC++ゼロからシリーズ(四)
14398 ワード
条件判断の後、サイクルを勉強しましょう.配列を入力して、配列内の各要素に値を割り当てます.ファイルを読み込み、ファイルの各行を出力します.などとループを使います.
CとC++において,原生のサイクルは主にforサイクルとwhileサイクルがある.このうちwhileサイクルは、while(){}とdo{}while()の2つに分けられる(多くの教科書では、当型サイクルと至型サイクルと呼ばれる).
これは私たちの3つの例の使い方です.
あるコンパイラは拡張子、パラメータなどに対して一定の要求があり、私が使用しているgcc 4.8.5バージョンでは.
1.ファイルの拡張子が.c,gccコンパイルを使用すると,forループはC 99 modeでしか使用できないことを示唆した.
2.同じコードをg++でコンパイルした場合、コンパイルに成功
3.拡張子が.ccは,gccとg++を用いたコンパイルに成功した.
4.VS 2015ではこの問題は発生しなかった.
5.VC 6は、2番目のforサイクルにおけるxが繰り返し定義されていると判定する.
forサイクルには3つの式があり、中間的に使用されます.区切る.1つ目はループ開始時の初期式で、2つ目はループ終了条件、3つ目はループ後に実行される文で、変数を更新してループが徐々に終了条件に近づくようにします.
したがって、プログラムは、上のforループの例で次のように実行される.
1.変数xを定義し、初期値0を付与する.
2.xが第2の式xを満たしているか否かを判断する.
3.満たされていなければ(x<10)、ループを終了
4.満たされた場合、forループ内の文を実行する
5.forループの3番目の式x++を実行する
6.手順2~5を繰り返します.
サイクルボディでは、breakを使用してサイクルを終了することができます.(forもwhileもそうです).
したがって、2番目の式が空の場合もあります.以上の例では、2番目の式が空の場合、このように書くことができます.
3つ目の表現が空になる例もありますが、そう書きましょう.
forループを変換し続けます.なぜなら、forループでは、最初の式がループに入るときにのみ実行されることを知っているので、forループの前に実行することができます.変数xを繰り返し定義していないことを確認した場合,forループを
このときforループ式は空であり,forループをwhileループに簡単に変更できる.
次のように変更します.
これにより、forループをwhileループに変更することができます.具体的には、コードを書くときにforを使用しますか、whileを使用しますか.どちらがいいかは誰も言っていません.ただしforループはC 99 modeを使用する必要があり、書くコードが古い環境で実行される必要がある場合はwhileループしか使用できません.
whileでは,我々が用いたwhile(1),Cでは0がfalse,非0がtrueである.
次はwhileループについてお話しします.
CとC++において,原生のサイクルは主にforサイクルとwhileサイクルがある.このうちwhileサイクルは、while(){}とdo{}while()の2つに分けられる(多くの教科書では、当型サイクルと至型サイクルと呼ばれる).
これは私たちの3つの例の使い方です.
1 int main()
2 {
3 int a[10] ={0};
4 for (int x = 0; x < 10; x++)
5 {
6 a[x]=2*x;
7 }
8 for (int x = 0; x < 10; x++)
9 {
10 printf("The %d element is %d
", x+1, a[x]);
11 }
12 return 0;
13 }
あるコンパイラは拡張子、パラメータなどに対して一定の要求があり、私が使用しているgcc 4.8.5バージョンでは.
1.ファイルの拡張子が.c,gccコンパイルを使用すると,forループはC 99 modeでしか使用できないことを示唆した.
2.同じコードをg++でコンパイルした場合、コンパイルに成功
3.拡張子が.ccは,gccとg++を用いたコンパイルに成功した.
4.VS 2015ではこの問題は発生しなかった.
5.VC 6は、2番目のforサイクルにおけるxが繰り返し定義されていると判定する.
forサイクルには3つの式があり、中間的に使用されます.区切る.1つ目はループ開始時の初期式で、2つ目はループ終了条件、3つ目はループ後に実行される文で、変数を更新してループが徐々に終了条件に近づくようにします.
したがって、プログラムは、上のforループの例で次のように実行される.
1.変数xを定義し、初期値0を付与する.
2.xが第2の式xを満たしているか否かを判断する.
3.満たされていなければ(x<10)、ループを終了
4.満たされた場合、forループ内の文を実行する
5.forループの3番目の式x++を実行する
6.手順2~5を繰り返します.
サイクルボディでは、breakを使用してサイクルを終了することができます.(forもwhileもそうです).
したがって、2番目の式が空の場合もあります.以上の例では、2番目の式が空の場合、このように書くことができます.
1 int main()
2 {
3 int a[10] ={0};
4 for (int x = 0; ; x++)
5 {
6 if (x >= 10)
7 break;
8 a[x]=2*x;
9 }
10 for (int x = 0; ; x++)
11 {
12 if (x >= 10)
13 break;
14 printf("The %d element is %d
", x+1, a[x]);
15 }
16 return 0;
17 }
3つ目の表現が空になる例もありますが、そう書きましょう.
1 int main()
2 {
3 int a[10] ={0};
4 for (int x = 0; ; )
5 {
6 if (x >= 10)
7 break;
8 a[x]=2*x;
9 x++;
10 }
11 for (int x = 0; ; )
12 {
13 if (x >= 10)
14 break;
15 printf("The %d element is %d
", x+1, a[x]);
16 x++;
17 }
18 return 0;
19 }
forループを変換し続けます.なぜなら、forループでは、最初の式がループに入るときにのみ実行されることを知っているので、forループの前に実行することができます.変数xを繰り返し定義していないことを確認した場合,forループを
1 int main()
2 {
3 int a[10] ={0};
4 int x = 0;
5 for (; ; )
6 {
7 if (x >= 10)
8 break;
9 a[x]=2*x;
10 x++;
11 }
12 x=0;
13 for (; ; )
14 {
15 if (x >= 10)
16 break;
17 printf("The %d element is %d
", x+1, a[x]);
18 x++;
19 }
20 return 0;
21 }
このときforループ式は空であり,forループをwhileループに簡単に変更できる.
次のように変更します.
1 int main()
2 {
3 int a[10] ={0};
4 int x = 0;
5 while(1)
6 {
7 if (x >= 10)
8 break;
9 a[x]=2*x;
10 x++;
11 }
12 x=0;
13 while (1 )
14 {
15 if (x >= 10)
16 break;
17 printf("The %d element is %d
", x+1, a[x]);
18 x++;
19 }
20 return 0;
21 }
これにより、forループをwhileループに変更することができます.具体的には、コードを書くときにforを使用しますか、whileを使用しますか.どちらがいいかは誰も言っていません.ただしforループはC 99 modeを使用する必要があり、書くコードが古い環境で実行される必要がある場合はwhileループしか使用できません.
whileでは,我々が用いたwhile(1),Cでは0がfalse,非0がtrueである.
次はwhileループについてお話しします.