読み込み中...

C言語におけるContinue文の完全解説!7つの詳細なサンプルコードと応用例で理解を深めよう

C言語のcontinue文を解説するイラスト C言語
この記事は約7分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

本記事のサンプルコードを活用して機能追加、目的を達成できるように作ってありますので、是非ご活用ください。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を満たす現役のプログラマチームによって監修されています。

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

本記事では、プログラミング言語の一つであるC言語におけるcontinue文の詳細な使い方から注意点、カスタマイズ方法までを一挙に解説します。

また、具体的なサンプルコードを交えて初心者でも理解しやすい形でご紹介します。

●C言語とは

C言語は、1970年代に開発されたプログラミング言語で、OSや組み込みシステムなど、様々なソフトウェア開発に幅広く使用されています。

そのシンプルで効率的な特性から、他の多くの言語の設計に影響を与え、現在でもその学習は必須とされています。

●continue文とは

continue文はC言語における制御文の一つで、これが登場するとその後の処理をスキップし、ループの最初に戻る働きを持っています。

ループ処理の中で特定の条件の時だけ処理をスキップしたい、という場合に非常に有用なツールとなります。

○continue文の基本的な使い方

continue文は、基本的にはwhile文やfor文といったループ文の内部で使用されます。

次の基本形を覚えておきましょう。

for(int i = 0; i < 10; i++) {
  if(i % 2 == 0) {
    continue;
  }
  printf("%d\n", i);
}

このコードでは、for文を使って0から9までの数を出力しています。

ただし、continue文によりiが偶数の時はprintf文をスキップし、次のループに進む動作をします。

●continue文の詳細な使い方

ここで、continue文のもう少し詳細な使い方を解説します。

○サンプルコード1:基本的な使い方

前述の基本的な使い方を紹介します。

for(int i = 0; i < 10; i++) {
  if(i % 3 == 0) {
    continue;
  }
  printf("%d\n", i);
}

このコードでは、for文を使って0から9までの数を出力しています。

ただし、continue文によりiが3で割り切れる数(0、3、6、9)の時はprintf文をスキップし、次のループに進む動作をします。

このため、出力結果は1, 2, 4, 5, 7, 8となります。

○サンプルコード2:ループ内での使用例

次に、ループ内でcontinue文を用いた例を見てみましょう。

for(int i = 0; i < 5; i++) {
  for(int j = 0; j < 5; j++) {
    if(j == 2) {
      continue;
    }
    printf("i:%d, j:%d\n", i, j);
  }
}

このコードでは、二重のforループを行っており、内側のループ(jループ)でjが2の時にcontinue文が働きます。

そのため、「j:2」という出力だけがスキップされ、他の値については正常に出力されます。

○サンプルコード3:複数のループでの使用例

さらに、複数のループでcontinue文を用いた例を見てみましょう。

for(int i = 0; i < 5; i++) {
  if(i == 2) {
    continue;
  }
  for(int j = 0; j < 5; j++) {
    if(j == 2) {
      continue;
    }
    printf("i:%d, j:%d\n", i, j);
  }
}

このコードでは、外側のループ(iループ)でも内側のループ(jループ)でもそれぞれの値が2のときにcontinue文が働きます。

その結果、「i:2」および「j:2」の出力がスキップされます。

●continue文の注意点

continue文の使用にあたり、いくつか注意すべき点があります。

一般的に、continue文はループの途中であっても処理をスキップするため、制御構造が複雑になり、プログラムの流れを読み解くことが難しくなる可能性があります。

そのため、必要以上にcontinue文を使うことは避け、可能な限りシンプルな構造を保つことが推奨されます。

○サンプルコード4:誤った使用例とその対処法

次に、continue文を誤って使用した例とその対処法を紹介します。

#include<stdio.h>

int main() {
    int i = 0;
    while(i < 10) {
        i++;
        if(i % 2 == 0) {
            continue;
        }
        printf("%d\n", i);
        i++;
    }
    return 0;
}

このコードでは、iが偶数の時にcontinue文が働き、その後のprintf文と「i++」をスキップします。

しかし、このままでは「i++」がスキップされるため、iの値が更新されず、無限ループに陥ってしまいます。

これを防ぐためには、continue文が実行される前にiの値を更新することで、正しくループを終了させることができます。

#include<stdio.h>

int main() {
    int i = 0;
    while(i < 10) {
        i++;
        if(i % 2 == 0) {
            continue;
        }
        printf("%d\n", i);
    }
    return 0;
}

この修正後のコードでは、iが偶数の時にprintf文をスキップするだけで、「i++」は必ず実行されるため、正しくループが終了します。

●continue文のカスタマイズ方法

次に、continue文をカスタマイズして使用する方法を見てみましょう。

○サンプルコード5:ループと条件文を組み合わせたカスタマイズ例

for(int i = 0; i < 10; i++) {
  if(i < 5) {
    continue;
  }
  printf("%d\n", i);
}

このコードでは、for文を使って0から9までの数を出力しています。

ただし、continue文によりiが5未満のときはprintf文をスキップし、次のループに進む動作をします。

このため、出力結果は5, 6, 7, 8, 9となります。

このように、continue文とif文を組み合わせることで、出力を制御することができます。

●continue文の応用例

最後に、continue文の応用例を見てみましょう。

○サンプルコード6:効率的なデータ処理のためのcontinue文の使用例

int data[10] = {1, -1, 2, -2, 3, -3, 4, -4, 5, -5};
for(int i = 0; i < 10; i++) {
  if(data[i] < 0) {
    continue;
  }
  printf("%d\n", data[i]);
}

このコードでは、配列dataの要素をfor文を用いて一つずつ取り出しています。

continue文により要素が負の数のときはprintf文をスキップし、次のループに進む動作をします。

このため、出力結果は1, 2, 3, 4, 5となります。

このように、continue文を用いることで不要なデータを無視し、必要なデータのみを処理することができます。

○サンプルコード7:高度なプログラミングテクニックとしてのcontinue文の使用例

for(int i = 0; i < 100; i++) {
  if(i % 2 == 0 || i % 3 == 0) {
    continue;
  }
  printf("%d\n", i);
}

このコードでは、for文を用いて0から99までの数を取り出しています。

ただし、iが2または3で割り切れる数の時にprintf文をスキップし、次のループに進む動作をします。

その結果、2または3で割り切れない数だけが出力されます。

まとめ

以上がC言語のcontinue文の詳細な解説でした。

これらの例を通じて、continue文がどのように動作し、どのような場面で有効に活用できるかを理解できたでしょうか。

ただし、continue文は制御フローを複雑にする可能性があるため、適切な場面で使うことが重要です。

ぜひ、この知識を活かして、効率的なコードを書くことに挑戦してみてください。