switch-case文

分岐する条件が変数の値であれば、switch-case文を使うこともできる・・・。

たとえば、

aが1なら、"a is one."とprintfで出力、
aが2なら、"a is two."とprintfで出力、
aが3なら、"a is three."とprintfで出力、
それ以外なら、"a is otherwise."とprintfで出力。

という場合は、

switch (a){
  case 1:
    printf("a is one.\n");
    break;
  case 2:
    printf("a is two.\n");
    break;
  case 3:
    printf("a is three."\n");
    break;
  default:
    printf("a is otherwise.\n");
    break;
};

と書く・・・。
switchのあとの括弧"()"に変数、条件値はcaseのあとに・・・。
処理の終わりにはbreakを忘れないように・・・。
これを忘れると、次のcaseの行の処理を実行してしまうので・・・。
どの条件値にもあてはまらない場合は、defaultから実行される・・・。

ここでは、前回のif-else文の頁で作った簡易電卓を一部switch-case文に書き直してみる・・・。

まずは、数値と演算子の入力・・・。

前回と違い、opやbが入力されてもすぐにif文で判定しないようにしている・・・。

そして、演算子決定、そしてエラー処理をswitch-case文1つにまとめたのが、これ・・・。

条件の対象となる変数にop、条件値に'+', '-', '*', '/'を設定し、それぞれ計算結果をresultに格納する処理を書いている・・・。

どれにもあてはまらない場合はdefaultのエラー処理に・・・。

0で除算してしまう場合は・・・、

実際、でたらめな演算子を入力すると、

$ ./switch_case
a: 4
op: A
b: 2
Error: op( = A) is invalid.

となる・・・。

Sample/switch_case.c at master · bg1bgst333/Sample · GitHub