Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ switch、break | 制御文
C基礎

bookswitch、break

メニューを表示するにはスワイプしてください

switch文の使用方法

自動販売機でソーダを購入する場面を想像してください。希望する飲み物を選択すると、自動販売機のコンピュータ内部で user_input 変数があらかじめ定義された複数の値のいずれかを取ります。これらの各選択肢は case と呼ばれ、ここで switch 文が活用されます。

switch 文は、if-else 文の別バージョンと考えることができます。事前に定義した特定の値に応じて動作します。

switch 文の構造は次のようになります。

main.c

main.c

copy
1234567891011121314151617
switch (integer_expression) { case first_case_value: // Instruction for this case break; case second_case_value: // Instruction for this case break; case third_case_value: // Instruction for this case break; default: // Default instruction }

自動販売機の例を考える。異なる種類のチップスを選択するための3つのボタンがあるとする。

  • チーズ味チップス
  • ベーコン味チップス
  • チリ味チップス
Main.c

Main.c

copy
123456789101112131415161718192021222324
#include <stdio.h> int main() { int userInput = 2; switch (userInput) { case 1: printf("You selected cheese-flavored chips.\n"); break; case 2: printf("You selected bacon-flavored chips.\n"); break; case 3: printf("You selected chili-flavored chips.\n"); break; default: printf("You selected another item.\n"); } return 0; }

テストされた式がいずれのケースにも一致しない場合defaultケースが実行される。defaultケースが指定されていない場合、プログラムはそのまま処理を続行する。

Note
注意

switch文でテストされる式は、整数型またはchar型のみ使用可能。ケースとして文字列や非整数型データ型は使用不可

Main.c

Main.c

copy
12345678910111213141516171819202122232425
#include <stdio.h> int main() { char userInput = 'y'; switch (userInput) { case 'a': printf("You entered 'a' character\n"); break; case 'b': printf("You entered 'b' character\n"); break; case 'c': printf("You entered 'c' character\n"); break; default: printf("You entered unknown character\n"); } return 0; }

breakの役割

breakコマンドは現在のブロックの実行を停止し、次のコードセグメントへ進行。該当するcaseが完了した時点で、そのブロックを抜けてプログラムを継続。

breakコマンドがない場合、switch文は連続して実行され、意図しない結果になる可能性あり。

Main.c

Main.c

copy
123456789101112131415161718192021222324
#include <stdio.h> int main() { char userInput = 'b'; switch (userInput) { case 'a': printf("You entered 'a' character\n"); // without break case 'b': printf("You entered 'b' character\n"); // without break case 'c': printf("You entered 'c' character\n"); // without break default: printf("You entered unknown character\n"); } return 0; }

break コマンドがない場合、プログラムは一致する case を見つけた直後から実行を開始し、break に到達するか switch の終わりに達するまで継続する

question mark

break ブロック内での switch 文の主な目的は何ですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 4.  4

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 4.  4
some-alt