C/C++におけるdo-whileループとwhileループの違いを徹底解説
本記事では、C言語およびC++におけるdo-whileループとwhileループの基本的な違いについて、コード例を交えながら詳しく解説します。
whileループとは
C言語におけるwhileループは、指定された条件が真(true)である限り、対象のステートメントを繰り返し実行する制御構造です。基本構文は以下の通りです。
while(condition) {
statement(s);
}
ここで、statement(s)は単一のステートメントでも複数のステートメントからなるブロックでも構いません。conditionには任意の式を指定でき、0以外の値はすべて「真」とみなされます。ループは条件が真である間、繰り返し実行されます。
条件が偽(false)になった時点で、プログラムの制御はループ直後の行へと移ります。
whileループのサンプルコード
#include <stdio.h>
int main () {
int a = 10; /* ローカル変数の定義 */
/* whileループの実行 */
while( a < 20 ) {
printf("value of a: %d\n", a);
a++;
}
return 0;
}
実行結果
value of a: 10 value of a: 11 value of a: 12 value of a: 13 value of a: 14 value of a: 15 value of a: 16 value of a: 17 value of a: 18 value of a: 19
do-whileループとは
do...whileループは、forループやwhileループがループ本体の実行前に条件を判定するのに対し、ループの末尾で条件を判定する点が大きな特徴です。
そのため、do...whileループはwhileループと似ていますが、条件に関係なく少なくとも1回は必ず実行されることが保証されています。
do {
statement(s);
}
while( condition );
条件式がループの最後に置かれているため、ループ内のステートメントは条件判定よりも先に1回実行されます。その後、条件が真であれば制御は再びdoに戻り、ループ内の処理が再度実行されます。このプロセスは、指定された条件が偽になるまで繰り返されます。
do-whileループのサンプルコード
#include <stdio.h>
int main () {
int a = 10; /* ローカル変数の定義 */
/* do-whileループの実行 */
do {
printf("value of a: %d\n", a);
a = a + 1;
} while( a < 20 );
return 0;
}
実行結果
value of a: 10 value of a: 11 value of a: 12 value of a: 13 value of a: 14 value of a: 15 value of a: 16 value of a: 17 value of a: 18 value of a: 19
whileループとdo-whileループの違いまとめ
両者の主な違いを以下の表にまとめます。
| whileループ | do-whileループ |
|---|---|
| エントリ制御ループ(前置判定)。ループに入る前に条件をチェックする | 出口制御ループ(後置判定)。ループを抜ける際に条件をチェックする |
| 条件によっては一度も実行されない場合がある(0回以上実行) | 少なくとも1回は必ず実行される |
| 条件に使う変数は、ループに入る前に必ず初期化しておく必要がある | ループ条件の変数は、ループ内で初期化することも可能 |
while(condition){
//statement
} | do{
//statement
}while(condition); |
このように、「条件を満たしていなくても1回は処理を実行したい場合」にはdo-whileループ、「条件次第では一切実行したくない場合」にはwhileループというように、用途に応じて使い分けることが重要です。
-
C/C++の型キャストとは?基礎から整数昇格・通常の算術型変換まで解説
型キャスト(型変換)とは、あるデータ型の変数を別のデータ型へ変換する手法のことです。例えば、long型の値を単純なint型の変数に格納したい場合、longをintへキャストすることができます。値をある型から別の型へ明示的に変換するには、キャスト演算子を次の形式で使用します。(型名) 式キャスト演算子の使用例次の例では、キャスト演算子によって整数変数同士の除算が浮動小数点演算として実行されます。#include <stdio.h> main() { int sum = 17, count = 5; double mean; mean = (double) su
-
Linux向けC++開発に最適なIDEのおすすめ6選
大規模なプロジェクトをテキストエディタだけで管理するのは容易ではありません。そうしたケースではIDE(統合開発環境)を活用することで、生産性が向上し、フラストレーションも大幅に軽減されるでしょう。IDEにはさまざまな種類があり、自分のニーズに合ったものを選ぶことが重要です。「Linux上のC++開発において唯一のベスト」と呼べるIDEは存在せず、賢くツールを見極める必要があります。ここでは、人気が高く、編集部のおすすめでもあるLinux向けIDEを紹介します。Linuxで使えるC++向けIDE おすすめ6選1. NetBeansNetBeansは、C/C++をはじめ多くのプログラミング言語に対