【C/C++入門】while(1)とwhile(0)の違いをわかりやすく解説
本記事では、C言語およびC++における while(1) と while(0) の違いについて詳しく解説します。while はC/C++に用意されている繰り返し処理(ループ)の一つで、指定した条件を評価し、その条件が真(true)である間、ループ内の文を繰り返し実行します。
while(1):無限ループを作る
while(1) や while にゼロ以外の値を指定した場合、条件が常に真と判定されるため、無限ループになります。条件式には「1」などの非ゼロ値が書かれているだけで、偽になることがないため、ループ内の処理が永久に実行され続けます。
この無限ループから抜け出すには、if 文などの条件分岐と break 文を組み合わせて、任意のタイミングでループを終了させる必要があります。
サンプルコード
#include<iostream>
using namespace std;
main(){
int i = 0;
cout << "Starting Loop" << endl;
while(1){
cout << "The value of i: " << ++i <<endl;
if(i == 10){ //iが10になったらループを抜ける
break;
}
}
cout << "Ending Loop" ;
}
実行結果
Starting Loop The value of i: 1 The value of i: 2 The value of i: 3 The value of i: 4 The value of i: 5 The value of i: 6 The value of i: 7 The value of i: 8 The value of i: 9 The value of i: 10 Ending Loop
この例では、変数 i が10になった時点で break 文が実行され、無限ループを正常に抜け出しています。このように、サーバーの常駐処理やイベント待ち受けなど、明示的に終了条件を制御したい場面で while(1) はよく利用されます。
while(0):一度も実行されないループ
一方、while(0) は条件が常に偽(false)として扱われます。C/C++では「0」は偽、「0以外」は真と判断されるため、ループ内の文は一度も実行されることなく、即座にスキップされます。そのため、while(0) のループは実質的に無意味です。
サンプルコード
#include<iostream>
using namespace std;
main(){
int i = 0;
cout << "Starting Loop" << endl;
while(0){
cout << "The value of i: " << ++i <<endl;
if(i == 10){ //iが10になったらループを抜ける
break;
}
}
cout << "Ending Loop" ;
}
実行結果
Starting Loop Ending Loop
実行結果を見ると、ループ内の出力は一切行われておらず、「Starting Loop」と「Ending Loop」だけが表示されています。
まとめ:両者の違い
while(1) は条件が常に真となるため無限ループを実現し、break 文などで意図的に抜け出す必要があります。対して while(0) は条件が常に偽となるため、ループ本体は一度も実行されません。なお、C++では可読性を高めるために while(true) / while(false) と記述することも可能です。
-
C++におけるリテラルと定数の違いとは?初心者向けにわかりやすく解説
リテラルとは? リテラル(literal)とは、プログラムのコードの中に値そのものとして直接記述された値のことです。たとえば、数値の 25 や文字列の Hello World は、どちらもリテラルに該当します。 定数とは? 一方、定数(constant)は、リテラルに名前を付けて扱えるようにしたものです。プログラムの中で何度も参照する、決まっていて変更されない値がある場合には、リテラルをそのまま書き並べるのではなく、定数として宣言して使うのが良い習慣とされています。 たとえば、円の面積や円周などを計算するとき、プログラムのさまざまな場所で円周率を使用することになります。このように同じ値を繰
-
【C++】前置インクリメント「++i」と後置インクリメント「i++」の違いとは?
C++のインクリメント演算子「++」には、前置(prefix)と後置(postfix)の2つの形式があり、それぞれ動作に大きな違いがあります。前置インクリメント(++i):変数 i の値を先に1増やし、その増加後の新しい値が式の値になります。つまり、「まず増加してから値を返す」動作です。後置インクリメント(i++):変数 i の値は1増やされますが、式の値としては増加前の元の値が使われます。つまり、「まず値を返してから増加する」動作です。サンプルコード実際のコードを見ながら、その違いを詳しく確認してみましょう。#include<iostream> using namespace s