今日のケーススイッチのコードを見て、どのように動作するのか少し驚いていました。コードはでした:ケーススイッチはこのように動作しますか?
switch (blah)
{
case a:
break;
case b:
break;
case c:
case d:
case e:
{
/* code here */
}
break;
default :
return;
}
変数がc
たシナリオで驚いたことに、パスは「コードここでは、」セグメント内で行ってきました。私はケーススイッチの一部であるc
の最後に休憩がないことに同意しますが、代わりにdefault
を通過すると想像しました。あなたがcase blah:
行に着陸するとき、あなたの現在の値が特定の場合と一致しているかどうかをチェックしていないのですか?が特定のセグメントに入ってしまいますか?それ以外の場合は何が起こっているのでしょうか?
: - 丁寧な返信をお願いします!私はそれがどのように機能するかを知っている。それは、私の常識に反しているということだけです。私はまだその行動が直感的ではないと思います。私は日付まで、それらの「事件(ああ)」は、あなたの変数が本当に(まあまあ)..明らかにそれはCの仕組みではありません! – Manish
@Manish:スイッチはしばしば "[支店テーブル](http://en.wikipedia.org/wiki/Branch_table)"で実装されています。プログラミングには常識は存在しません。代わりに "プログラマーセンス"が必要です:) –
@Manish両方の動作が望ましいですが、デフォルトのフォールスルーと明示的に「ブレークアウト」、またはデフォルトのブレークアウトがあり、必要に応じて次のケースに明示的に「続ける」ことができます。常識的な見方からすれば、後者はより自然に見えるかもしれませんが、実装を念頭に置いて、デフォルトのフォールスルーはより自然なので選択されました。 –