C言語 breakの使い方

この記事のポイント

  • break文によるループや制御構造からの即時脱出
  • switch文による特定ケース処理後の制御移動
  • 複雑な条件判定での処理効率化
  • 無限ループからの計画的脱出
  • 入れ子構造における注意点とbreak文の適切な使用法

目次

C言語のbreak文とは?

C言語のbreak文は、ループやswitch文からすぐ脱出する目的で使う制御命令文です。具体的には、プログラム内で特定条件が満たされたタイミングで、ループ内に残っている処理をスキップして、次の処理に移りたい場合に使用します。

例えば、配列内で特定の値を探していたときに、その値が見つかった時点で探索を終えるイメージです。break文を使いループなどを即座に終了すると、必要以上の処理が流れなくなることで処理効率がアップします。

break文は、for文・while文・do-while文・switch文のなかで使用するものです。

break文には、特定条件が満たされたときに各構造から即座に抜け出せる一方で、過度に使うとプログラムの流れを複雑にする注意点があります。しかし、適切な使い方をすれば、プログラムの柔軟性を高める便利なツールとなるでしょう。

【関連】
C言語をもっと詳しく学ぶならpaizaラーニング

基本構文

C言語のbreak文は、適切な場所で「break;」と記述するだけのシンプルな命令文で、条件と組み合わせてループ内で使うと、その条件が真になった時点でループから脱出します。また、switch文を使うときには、各case末尾にbreak文を配置することで、次のcaseへの「落ち込み」を防止することも大切です。

実用例

C言語のbreak文を身につけるためには、基本的なコードパターンや使い方のポイントを理解したうえで、自分のプログラムに実装する経験が必要です。

特に初心者の場合、実際のコードに触れてみると「自分の思うような動きにならない」や「コンパイルエラーが出る」などの問題に直面するはずです。しかし、こうした壁を乗り越えて多くの経験則を得ていくと、break文の効率的な実装方法やエラー時の問題解決方法などが見えてくるでしょう。

このセクションで紹介するbreak文は、実際のプログラム上で動くものばかりです。C言語プログラミングを学習中の方は、基本的な使い方を学んだうえで、ぜひとも自分の開発環境でコードを動かしてみてください。

そうすることで、適材適所のコードを選択するための感覚や思考力なども徐々に身についていくでしょう。

for文での基本的な使い方

配列内で特定の値を見つけたときに探索を終了する、基本的なサンプルコードです。break文によって無駄な探索を省くと、プログラムの効率性を高めやすくなるでしょう。

#include <stdio.h> int main(void) { int animals[] = {1, 2, 3, 4, 5}; int i; for (i = 0; i < 5; i++) { printf("検索中: %d\n", animals[i]); if (animals[i] == 3) { printf("イヌが見つかりました!\n"); break; } } return 0; }

実行結果:

検索中: 1
検索中: 2
検索中: 3
イヌが見つかりました!

while文での条件付き脱出

無限ループ内で特定条件を満たしたときに、処理を終了するコードパターンです。カウンターが特定の値に達したタイミングで、ループを抜け出す構造になっています。

#include <stdio.h> int main(void) { int count; count = 0; while (1) { printf("ネコが%d匹...\n", ++count); if (count >= 3) { printf("ネコが十分集まりました\n"); break; } } return 0; }

実行結果:

ネコが1匹...
ネコが2匹...
ネコが3匹...
ネコが十分集まりました

switch文での活用法

switch文のなかで、各caseの処理後に次のcaseに進まないようにするためには、以下のコードパターンを使います。switch文でbreak文を使うときに注意したいのが、フォールスルー現象の発生です。フォールスルー現象とは、caseの末尾にbreak文を入れ忘れたときに次のcaseをそのまま実行してしまうことです。

#include <stdio.h> int main(void) { int code; code = 2; switch (code) { case 1: printf("イヌ:忠誠心が強い\n"); break; case 2: printf("ネコ:独立心が強い\n"); break; case 3: printf("ウサギ:跳ねる\n"); break; default: printf("不明な動物\n"); } return 0; }

実行結果:

ネコ:独立心が強い

入れ子ループからの脱出

2次元配列で値を探す場合に、ループから脱出するためのコードパターンです。条件文とフラグ変数を組み合わせた場合、内側と外側、両方のループから一気に抜け出すことが可能となります。

#include <stdio.h> int main(void) { int zoo[2][3] = {{1, 2, 3}, {4, 5, 6}}; int found; int i; int j; found = 0; for (i = 0; i < 2 && !found; i++) { for (j = 0; j < 3 && !found; j++) { if (zoo[i][j] == 5) { printf("パンダ発見: [%d][%d]\n", i, j); found = 1; } } } return 0; }

実行結果:

パンダ発見: [1][1]

無限ループと組み合わせた使い方

以下のコードパターンは、カウントダウンタイマーの実装例です。タイマーの値が0になったときに、break文で無限ループを終了します。この考え方は、ゲームやタイマー機能をつくる際によく使われるテクニックです。

#include <stdio.h> int main(void) { int count; count = 3; while (1) { printf("%d...\n", count); count--; if (count < 0) { printf("ゾウの登場!\n"); break; } } return 0; }

実行結果:

3...
2...
1...
0...
ゾウの登場!

配列操作での効率化

文字配列を処理するときに、特定の区切り文字が見つかったタイミングで処理を終えるコードパターンです。テキスト処理やパーサ(パーザ)でよく使われる基本的な仕組みとなります。パーサとは、いわゆる構文解析のことです。

#include <stdio.h> #include <string.h> int main(void) { char *animals[] = {"キ", "リ", "ン", "終", "カ", "バ"}; int i; printf("読み込み: "); for (i = 0; i < 6; i++) { if (strcmp(animals[i], "終") == 0) { printf("\n終了マークを検出\n"); break; } printf("%s", animals[i]); } return 0; }

実行結果:

読み込み: キリン
終了マークを検出

エラー処理での活用

プログラムの実行中に発生する可能性のあるエラー条件を検出して、処理を中断するためのコードパターンです。データ検証のプログラムでよく使われます。

#include <stdio.h> int main(void) { int values[] = {10, 20, 0, 40}; int i; for (i = 0; i < 4; i++) { printf("ライオン%d匹を処理中\n", values[i]); if (values[i] == 0) { printf("エラー:0匹は処理不可\n"); break; } } return 0; }

実行結果:

ライオン10匹を処理中
ライオン20匹を処理中
ライオン0匹を処理中
エラー:0匹は処理不可

まとめ

本記事では、C言語のbreak文における基本的な使い方から実践例までを幅広く紹介しました。break文は、ループやswitch文から即座に脱出するために用いる重要な制御命令文で、適切に使う事によりプログラムの効率性と柔軟性が向上します。

ただし、break文を頻繁に使いすぎた場合、プログラムの流れがわかりにくくなるい可能性があります。break文を使うときには、コードの読みやすさとメンテナンスのしやすさを意識しながら、必要な場面で活用してみてください。

レベルを更に上げたい方はpaizaプログラミングスキルチェックへ

  1. paizaラーニングトップ
  2. リファレンス
  3. C言語のリファレンス記事一覧
  4. C言語 breakの使い方