インタビューでこんな質問をされました。私はそれが条件付き構造であると答えました。
- 複数回実行できるループとは異なり、ループは 1 回実行されます。
- ループ制御メカニズムはなく、さまざまなケースに基づく条件付き切り替えのみがあります。
私の答えが正しいか間違っているか、より良い答えはありますか?
また、ループでのみ機能するため、break;
ステートメントが switch-case で機能する理由も尋ねました。break;
この質問には答えられませんでした。
C++ の場合
switch
はselection-statement
n3376 6.4/1 と 6.4.2 についてswitch
selection-statement:
...
switch ( condition ) statement
break
はjump-statement
n3376 6.6.1/1
break ステートメントは iteration-statement または switch ステートメントでのみ発生し、それを囲む最小の iteration-statement または switch ステートメントを終了させます。制御は、終了したステートメントの次のステートメントに渡されます (存在する場合)。
switch ケースは、命令のブロックをラップし、それを実行 (一部) する方法です。ここから始まり、ここで終わります。一致case
は開始を示し、次break
は終了を示します。
ブロックは、いくつかの命令である可能性があります。
{
instruction_A;
instruction_B;
instruction_C;
instruction_D;
}
ステートメントは、値case
に基づいて動的に開始する場所を示します。switch
switch(value)
{
case one:
instruction_A;
instruction_B;
case two:
instruction_C;
case three:
instruction_D;
}
の場合one
、ブレークがないため、すべての命令が呼び出されます。two
例外がなければ、Caseは C と D を実行します (c;.
break
ステートメントはどこで停止するかを示しており、多数のケース ステートメントを省略できることを意味します。
switch(value)
{
case one:
instruction_A;
instruction_B;
case two:
instruction_C;
break;
case three:
instruction_D;
}
Caseone
は A、B、および C を実行しますが、D は実行しません。