分岐する条件が変数の値であれば、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.
となる・・・。