switch case是循环还是条件构造?

Cod*_*der 4 c c++

我在接受采访时被问到这个问题.我回答说这是一个有条件的结构,因为

  • 它执行一次,不像一个具有多次执行能力的循环.
  • 没有循环控制机制,只有基于不同情况的条件切换.

那么我的回答是对还是错,有更好的答案吗?

他还问我说明break;语句与switch-case一起使用的原因,因为break;它只适用于循环.这个问题我无法回答.

For*_*veR 12

在C++中

switchselection-statement

n3376 6.4/1和6.4.2是关于 switch

selection-statement:
...
switch ( condition ) statement
Run Code Online (Sandbox Code Playgroud)

breakjump-statement

n3376 6.6.1/1

break语句只能在iteration-statement或switch语句中出现,并导致最小的封闭iteration-statement或switch语句终止; 控制权传递给终止语句后的语句(如果有).


Lun*_*din 7

答案C

没有称为“条件构造”的正式术语。C 标准使用术语选择语句。C 语言具有三种不同的选择语句:ifif-elseswitch(C11 6.8.4)。循环在迭代语句类别下排序(6.8.5)。

break语句是一个跳转语句,就像goto. 它对允许出现的位置有一些限制:

C11 6.8.6.3

Break 语句只能出现在 switch 体或循环体中或作为 switch 体或循环体出现。


那么回答面试问题:

switch case 是循环还是条件结构?

如果您所说的条件构造是指选择语句,那么是的,它switch是一个条件构造。

为什么要打破;语句与 switch-case 配合使用,因为、break;仅适用于循环

不,这个问题是不正确的,它不仅仅适用于循环。switch 它与和循环一起使用。这是因为 C 语言是这样定义的 (6.8.6.3)。