この記事では、C言語におけるwhile文
とfor文
の違いについて解説します。
while文
とfor文
の基本的な構文や制御条件の評価タイミング、初期化と更新処理、使用する場面の違いについて理解することができます。
初心者の方にもわかりやすく、具体的なコード例も交えて解説していますので、ぜひ参考にしてください。
while文とfor文の基本的な構文
while文の構文
while文
は、指定した条件が真である限り、繰り返し処理を行います。
while (条件式) {
// 繰り返し実行する処理
}
条件式が真の場合、繰り返し実行する処理が実行されます。
条件式が偽になると、while文
の処理は終了します。
for文の構文
for文
は、指定した初期化式、条件式、更新式を使って、繰り返し処理を行います。
for (初期化式; 条件式; 更新式) {
// 繰り返し実行する処理
}
初期化式は、ループの最初に一度だけ実行されます。
条件式が真の場合、繰り返し実行する処理が実行されます。
更新式は、繰り返し実行する処理の後に実行されます。
条件式が偽になると、for文
の処理は終了します。
また、条件式や初期化式、更新式を省略することも可能です。
制御条件の評価タイミングの違い
while文の制御条件の評価タイミング
while文
では、ループの実行前に制御条件が評価されます。
つまり、ループのブロック内の処理が実行される前に、制御条件がチェックされます。
もし制御条件が真であれば、ループのブロック内の処理が実行されます。
制御条件が偽であれば、ループは終了します。
以下に、while文
の制御条件の評価タイミングの例を示します。
int i = 0;
while (i < 5) {
printf("iの値は%dです\n", i);
i++;
}
この例では、変数i
が0から始まり、制御条件i < 5
が評価されます。
i
が5未満である限り、ループのブロック内の処理が実行され、i
の値が表示されます。
i
が5以上になると、制御条件が偽となり、ループは終了します。
for文の制御条件の評価タイミング
for文
では、ループの初期化、制御条件の評価、更新処理の順に行われます。
初期化はループの最初に一度だけ実行され、制御条件の評価はループのブロック内の処理の前に行われます。
更新処理はループのブロック内の処理の後に行われます。
以下に、for文
の制御条件の評価タイミングの例を示します。
for (int i = 0; i < 5; i++) {
printf("iの値は%dです\n", i);
}
この例では、変数i
が0から始まり、制御条件i < 5
が評価されます。
i
が5未満である限り、ループのブロック内の処理が実行され、i
の値が表示されます。
ループのブロック内の処理が終了すると、更新処理i++
が実行され、i
の値が1増加します。
再び制御条件が評価され、ループが継続するかどうかが判断されます。
制御条件の評価タイミングの違いにより、while文
とfor文
ではループの制御方法が異なります。
適切な制御方法を選択することで、プログラムの効率性や可読性を向上させることができます。
初期化と更新処理の違い
while文の初期化と更新処理
while文
では、初期化と更新処理を明示的に行う必要があります。
初期化はループの最初に一度だけ実行され、変数の初期化やカウンタの設定などを行います。
更新処理はループの各繰り返しの終わりに実行され、変数の値を更新したり、カウンタを増減させたりすることができます。
以下は、while文
の初期化と更新処理の例です。
int i = 0; // 初期化
while (i < 10) {
printf("%d\n", i);
i++; // 更新処理
}
この例では、変数i
を0で初期化し、i
が10未満の間、i
の値を表示してからi
を1増やしています。
for文の初期化と更新処理
for文
では、初期化、制御条件、更新処理を1つの行でまとめて記述します。
初期化はループの最初に一度だけ実行され、変数の初期化やカウンタの設定などを行います。
制御条件はループの各繰り返しの前に評価され、条件が真の場合にループが実行されます。
更新処理はループの各繰り返しの終わりに実行され、変数の値を更新したり、カウンタを増減させたりすることができます。
以下は、for文
の初期化と更新処理の例です。
for (int i = 0; i < 10; i++) {
printf("%d\n", i);
}
この例では、変数i
を0で初期化し、i
が10未満の間、i
の値を表示してからi
を1増やしています。
初期化と更新処理を1つの行でまとめることで、コードの見通しが良くなり、短く簡潔なループを書くことができます。
また、初期化や更新処理をループの外で行う必要がないため、コードのミスを防ぐことができます。