-4

重複の可能性:
switchステートメントがブレークを必要とするように設計されたのはなぜですか?

私はこれを持っています:

switch(i)
{
  case a:
  {
   //code
  }
  case b:
  {
   //code
  }
  case c:
  {
   //code
  }
}

の場合i == a、コードを挿入しbc実行しますか、それともそれぞれにを挿入する必要がありbreak;ますか?

ありがとう、

4

3 に答える 3

8

それぞれに入れなければなりませんbreak;か?

はい、1つのケースのみを実行する場合は可能です。あるいは、またはのように、他の制御フローステートメントによってaswitchが終了することもあります。returnthrow

たとえば、に置き換える//codeと、std::cout << "case [x]" << std::endl答えはすぐにわかります。

于 2012-05-18T23:40:27.960 に答える
3

はい、正しく機能するには休憩が必要です。括弧はスコープを導入するだけで、フロー制御には影響しません。

于 2012-05-18T23:40:31.897 に答える
0

そうすることは良い習慣ですが、最後のものではありません。

1つに入れないbreakと、現在のケースと継続するすべてのケースが、次のブレーク、スロー、またはリターンまで実行されます。

caseこれは、2つのセクションで同じコードを実行する場合に役立ちます。次のように記述できます。

case a:
case b:
   // ... some code...
   break;

これは、aとbの両方に対して実行されます。

于 2012-05-18T23:42:29.150 に答える