• 締切済み

Switch構文について

最初にbreakが登場するまでブロック内の処理を実行するということを理解しました。 特定のcaseでのみbreakさせるような場合に、switch構文を使ってみたいです。 サンプルプログラムを作ってみて、構文の理解を深めているのですが 「特定のcaseでのみbreakさせる」例が思いつきません。 実際どのような場合にこの構文を使いたくなりますでしょうか。 (caseのたびに、必ずbreakさせるのであれば、if構文を使いたくなる) 想定しているイメージは ある条件がととのった場合は下記の処理を実行する。  処理(1)→処理(2)→処理(3)→処理(4) 別の条件がととのった場合は下記の処理を実行する。  処理(2)→処理(3)→処理(4) ※OKWAVEより補足:「Webシステム開発」についての質問です。

みんなの回答

  • _kappe_
  • ベストアンサー率68% (1583/2308)
回答No.3

switchだとこんな書き方ができます。ifでも同じことはできますが、この場合はこちらのほうが見やすいと思います。 switch (n) { case 1: case 2: case 4: case 6:  do_this();  break; case 0: case 3:  do_that();  break; default:  print_error();  break; } switch中でbreak;を書くべきところで書き忘れたために意図しない動作になってしまうというバグはありがちなので、良し悪しですね。

noname#236857
質問者

お礼

プログラムの見やすさの例ですね。 たしかに、同じ処理を単純にif構文で記載すると 見やすさが違いますね。 回答ありがとうございました。

  • maiko04
  • ベストアンサー率17% (345/1956)
回答No.2

あまり「最初にbreakが登場するまでブロック内の処理を実行する」ということが認知されていないというか、見たときに誤解されやすいので 「必ずbreakにてブロックを抜ける」としたほうが見やすいし、 誤解も避けられます。 「あれ?break抜けてる」と思われがちです。

noname#236857
質問者

お礼

認知されていない構文は、確かに誤解されやすいですね。 自分のプログラムコードが人に見られることも意識して 誤解されないようなプログラムにしたいと思います。 回答ありがとうございました。

noname#263248
noname#263248
回答No.1

エラーコード1の場合はログに保存しメッセージを出力する エラーコード2の場合はメッセージを出力する エラーコード3の場合は終了処理をしてプログラムを停止 もちろんifでもかけますが、今後エラーコードが増えた場合ならこちらのほうが楽です ※あまりいい例えができていない自覚はあるのですがここまで書いてしまって悔しいのでそのまま投稿させてください switch($error_code){  case 1: logwrite($error_code);  case 2: echo "ERROR! $error_code";     break;  case 3: ExitProcess ();     exit; }

noname#236857
質問者

お礼

処理に順序がある場合の例ですね。 たしかに、エラー時の処理の順序が大事な場合は ifではなくswitchを使いたくなりますね。 回答ありがとうございました。

関連するQ&A

専門家に質問してみよう