如果案例在括号中,是否需要休息?

时间:2012-05-18 23:38:49

标签: c++ c

  

可能重复:
  Why was the switch statement designed to need a break?

我有这个:

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

如果i == abc中的代码会被执行,还是我必须在每个代码中加break;

谢谢,

3 个答案:

答案 0 :(得分:8)

  

我必须在每个人中加break;吗?

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

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

答案 1 :(得分:3)

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

答案 2 :(得分:0)

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

如果你没有将break放入其中,那么当前案例和所有持续案件将一直执行,直到下一次休息,抛出或返回。

如果您希望两个case部分执行相同的代码,这非常有用,您可以写:

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

对于a和b都会执行。