Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

【C言語】forループの反復で使える4つのバリエーションを徹底解説

for文の基本構造

C言語におけるfor文の一般的な形式は以下の通りです。

for (初期化; 条件; 操作)
文;
  • 初期化:ループ制御変数を設定するための代入文です。
  • 条件:ループが終了するタイミングを決める関係式です。
  • 操作:ループが1回繰り返されるごとに、ループ変数がどのように変化するかを定義します。

なお、forループでは条件判定がループの先頭で行われる点に注意が必要です。そのため、最初から条件が偽である場合は、ループ内のコードが一度も実行されないこともあります。

例えば、次のコードを見てみましょう。

x = 10;
for (y = 10; y != x; ++y)
printf(" %d", y);

この例では、yの初期値が10であり、条件「y != x」が開始時点で偽となるため、printfは一切実行されません。

バリエーション1:カンマ演算子を活用する

カンマ演算子を使うことで、複数の変数を同時に制御するforループを記述できます。

for (x = 0, y = 0; x + y < 10; ++x);

この例では、xとyの両方がループの制御に関与しています。初期化部分でxとyを同時に0に設定し、継続条件では両者の合計を評価しています。

バリエーション2:定義要素の一部を省略する

forループの興味深い特徴のひとつは、ループ定義の各要素が必ずしもすべて必要ないという点です。

例えば、更新式を省略した次のコードをご覧ください。

for (x = 0; x != 456; )
scanf("%d", &x);

この場合、ループが繰り返されるたびに、xが456と等しいかどうかが判定されます。ユーザーが456を入力すると条件が偽となり、ループは終了します。

バリエーション3:無限ループを作る

ループ定義の3つの要素をすべて省略すると、無限ループが生成されます。このようなループから抜け出すには、break文を使用します。

for (;;) {
ch = getchar();
if (ch == 'A')
break;
}

このコードは、ユーザーが「A」を入力するまで標準入力から文字を読み込み続けます。「for(;;)」は、意図的に無限ループを表現する際の定番の書き方です。

バリエーション4:本体を持たないforループ

forループの本体(ボディ)は、空にすることもできます。一見無意味に思えますが、特定の場面ではコードの効率を高める有効な手法となります。

先頭の空白を削除する

例えば、strが指す文字列から先頭の空白を取り除く処理は、次の1行で実現できます。

for ( ; *str == ' '; str++) ;

時間稼ぎ(ウェイト)として使う

また、空の本体を持つループは、簡単な時間遅延(タイムディレイ)の実現にも利用できます。

for (t = 0; t < 1000; t++);

このようにforループは非常に柔軟性が高く、基本的な反復処理にとどまらず、さまざまな応用パターンに対応できる強力な構文です。用途に応じてこれらのバリエーションを使いこなすことで、より簡潔で効率的なコードを書けるようになります。

  1. C言語で評価される式の種類とは?6種類の式を徹底解説

    C言語における「式」とは?式(expression)とは、演算子とオペランドを組み合わせたものを指します。オペランドは演算の対象となるデータ項目であり、演算子はそのデータに対して具体的な操作を実行する役割を担います。例えば、次のような式を見てみましょう。z = 3 + 2 * 1 z = 5この場合、「3」「2」「1」がオペランドであり、「*」(乗算)や「+」(加算)が演算子として機能し、最終的に z には 5 が代入されます。C言語で使われる式の種類C言語で評価される式には、主に以下の6種類があります。1. 主式(一次式 / Primary Expressions)オペランドが識別子(変数名

  2. C言語の探索アルゴリズム解説|線形探索と二分探索の違いと実装例

    探索(サーチ)とは、複数の要素で構成されるリストの中から、目的の「キー」となる要素を見つけ出す処理のことです。 リストの中に指定した要素が存在すれば、その探索は「成功」とみなされます。 指定した要素がリストに存在しなければ、その探索は「失敗(不成功)」となります。 C言語で広く使われている代表的な探索手法は、主に次の2つです。 線形探索(Linear Search/リニアサーチ) 二分探索(Binary Search/バイナリサーチ) 線形探索(Linear Search)とは 線形探索は、リストの先頭から順に要素を1つずつ取り出し、キーと一致するかどうかを確認していく、最も基本的な探