C言語での無限ループの作り方

提供: C言語入門
2016年7月28日 (木) 18:01時点におけるDaemon (トーク | 投稿記録)による版 (ページの作成:「プログラムを作成するときに、無限ループを利用することがあります。C言語では、 '''while''' 文や '''for''' 文を利用して、'''無...」)

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索
スポンサーリンク

プログラムを作成するときに、無限ループを利用することがあります。C言語では、 while 文や for 文を利用して、無限ループを作れます。ここでは、for や while を利用した無限ループの作り方を紹介します。

読み方

無限ループ
むげんるーぷ

概要

無限ループが必要なシーンは、どういったケースでしょうか?例を挙げてみましょう。

  • ウェブサーバのプログラムのように、永久的にクライアントの接続を待ち、接続がきたら、処理をする、を終わりなく続けるプログラム
  • ログなどのファイルを永遠と読み続けて、処理し続けるプログラム

上記を簡単に説明すると、以下の様な条件で、無限ループを使うことになります。

  • プログラムの終わりが来ない
  • いつ終わるかわからない

無限ループは、Unix の デーモンプロセスのようなプログラムでよく利用されます。

無限ループを作る制御文

無限ループを作るときに、利用できる制御文は、以下の通りです。

  • for
  • while
  • do-while

無限ループの作り方

無限ループを作成するときは、ループ文(for, while, do-while)の継続条件を常に、継続するように指定します。

for での例

for の2番目の式(式2) を省略することで、ループは無限になります。

for ( 式1; 式2; 式3 )

式が省略された以下のプログラムは、C言語として、正しいプログラムです。

for ( ; ; )
{
	doit(); // 処理
}

while での例

while の条件を 1 にすると、常に真になるため、ループは無限になります。

while ( 1 )
{
	doit(); // 処理
}

do while での例

while と同じように、 while の条件を 1 にすると、ループは無限になります。

do
{
	doit(); // 処理
}
while ( 1 );

無限ループを終わらせる方法

無限ループを終わらせるには、 break を使用します。

for ( ; ; )
{
	doit(); // 処理
	if ( 条件 )
	{
		break;
	}
}

ここでは、 for の例を示しましたが、 while/do-while でも同じです。

無限ループを while か? for か?

無限ループを作成するときに、while を使用するか、 for を使用するかは、好みの問題でしょう。

  • プログラムを個人で作成する場合には、自分の好みで決める
  • 仕事で作成する場合は、会社のコーディングルールに合わせる
  • 既存のOSS に参加する場合は、OSSグループのコーディングルールに合わせる

OSの派閥によっては、お作法として明記されているケースもあります。 FreeBSD の bsd style では、無限ループを作成するときは

for (;;)
	stmt;
for (;;) {
	stmt;
}
for (;;) {
	if (cond)
		stmt;
}

などのように、 for() を利用するように明記されています。 詳しくは、FreeBSD の Man ドキュメントの style (スタイル) をお読みください。ドキュメントは、以下のコマンドで参照できます。

% man style

関連項目




スポンサーリンク