C言語 switch文で条件分岐に挑戦

プログラミング

 

今回はswitch文による条件分岐の方法を解説します。

 

前の記事では「if文による条件分岐」について書きました。if文による条件分岐をすることで、必要な処理だけを意図的に表示する方法や計算などで場合分けが必要なプログラムを作成することが出来ます。

 

今回はその条件分岐ができる命令文のもうひとつの種類「switch文」についてです。同じ条件分岐の命令文でもif文とswitch文ではその機能の仕方が多少違ってきます。いずれもC言語においては基本的な命令文なので必ず覚えておきましょう。

 

switch文の書き方

 

それではさっそくswitch文の書き方を紹介していきます。

switch文は、

と書きます。

構造を簡単に解説します。まず、比較値の部分に値が入ります。入る値は基本的にscanfでユーザーに入力してもらいます。その後、比較値とswitch文の中の各caseのすぐ右にある値1、値2、値3・・・と同じ値が見つかるまで比較していきます。

 

そして比較値と同じ値が見つかったら、そのcaseの直後にある文を実行します。例えば比較値と値1が等しかったら文1を実行します。その後、文のすぐ下にあるbreak文までいくとswitch文は終了です。

 

break文がわからないという人がいると思います。break文はループ文とよばれるプログラムから抜け出すときに使われる文です。もちろんswitch文はループ文ではないですが、break文はswitch文でも使うことが出来て、break文が実行されると「switch文を抜ける」という処理が実行されます。

 

最後にdefaultという文字があると思います。これはdefault文と呼び、switch文でだけ使われる特殊な文で「比較値と各caseの値がどれも一致しなかった」ときに実行されます。if文でいうところのelse文のようなものです。default文までいくと直後の文0が実行されてbreak文で終了となります。

 

switch文を書く時の注意

 

switch文を書く時に必ず確認してほしいのが、break文をちゃんとつけているかです。先ほども書いたように、break文はswitch文を抜け出すときに使う文です。なので、もしcase文のあとにbreak文が抜けていると、break文に行きつきまでそのまま続けて下の文を実行し続けてしまします。

 

例えば、

上のプログラムではcase1の最後にbreak文がありません。なのでコンピューターは「breakがないということは、このまま下の文を実行し続けてもいいんだ」と考えてそのままcase2の文2を実行します。breakがついているかどうかは必ず確認しましょう。

 

また、見た目が似ているため間違えやすいのがcaseのすぐ右にある : (コロン)です。文の最後に着ける ; (セミコロン)と似ているため間違って書いてしまっても気が付きにくいです。

 

switch文で何か自分の意図しないプログラムが実行したり、コンパイルでエラーが出た場合は次の2点

  • break1文があるか
  • : (コロン) と ; (セミコロン)を打ち間違えていないか

をよく確認してみてください。

 

switch文を使ったプログラム例

 

では今度は実際にswitch文を使って「ユーザーが入力する値と同じ値をひょうじする」プログラムを作っていきましょう。

 

このプログラムでは、「1~4の数字をユーザーに入力してもらって、その値を表示する」プログラムで、もしも1~4の値を入力してもらえなかったら「(入力された値)は1~4の整数ではありません」と表示します。

 

実行結果は

となります。では次に、defaultに書いてある文を実行するために9を入力してみると

となります。

 

switch文はif文と違い、たくさん条件分岐がる場合に使用されることが多いです。if文だといちいちelse if と入力しなければいけないところをcaseだけで条件分岐が出来ます。

 

以上がswitch文を使用した基本的なプログラムの解説でした。

では。

コメント