-4

可能重复:
为什么 switch 语句被设计为需要中断?

我有这个:

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

如果i == a是,代码会在b其中c执行还是必须break;在每个代码中都放一个?

谢谢,

4

3 回答 3

8

break;我必须在每个中放一个吗?

是的,如果您只想执行一个案例。或者,其他控制流语句也可以导致switch退出,例如returnthrow

如果您要替换//code为 ,std::cout << "case [x]" << std::endl则答案将很明显。

于 2012-05-18T23:40:27.960 回答
3

是的,它需要休息才能正常工作。括号仅介绍范围,它们不影响流量控制。

于 2012-05-18T23:40:31.897 回答
0

不是在最后一个,即使这样做是个好习惯。

如果您不break输入一个,那么当前案例和所有后续案例将执行到下一次中断、抛出或返回。

case这在您希望两个部分执行相同代码的情况下很有用,您可以编写:

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

这将为 a 和 b 执行。

于 2012-05-18T23:42:29.150 回答