【问题标题】:where must be break in switch objective-c开关objective-c中必须在哪里中断
【发布时间】:2017-09-22 03:51:30
【问题描述】:

这个解决方案有什么区别:

switch (value)
{
    case 1:
    {
        // some code
    } break;
}

break 留在括号后 还有这个:

switch (value)
{
    case 1:
    {
        // some code
        break;
    }
}

break 留在括号中时

【问题讨论】:

  • 没关系。
  • @Sulthan 谢谢!
  • @Fogmeister 如果//某些代码初始化了某些变量,则可能需要它们
  • @hariszaman 哦,objective-c...抱歉,刚刚看到。
  • @hariszaman 需要块语法(大括号)的不是初始化而是声明

标签: objective-c switch-statement case break


【解决方案1】:

break 使switch 语句结束其执行。如果您不将break 添加到您的case,则下一个case 将开始执行。考虑:

NSInteger myInt = 0;
switch (myInt) {
case 0:
   NSLog("0");
case 1:
   NSLog("1");
default:
   NSLog("Default");
}

将打印:

0
1
Default

因为没有休息。

是否将 break 包装到块 { break; } 中并不重要,因为该块会更改在其中声明的变量的范围,但对 break 本身没有影响。

{ ... } break;{ ... break; } 之间没有区别,因为在这两个版本中,break 是最后执行的语句,这才是最重要的。

然而,

case 0:
   if (myCondition) {
      break;
   }
case 1:
   ...

会有非常不同的含义。如果myConditionNO,那么下一个case (case 1:) 也会被执行(fall-through),因为break 语句还没有被执行。

【讨论】:

  • 这没有回答问题。不过,您的评论(“没关系。”)确实如此。
  • @NikolaiRuhe 我认为中间的段落回答了这个问题。我只是想添加一些上下文。
猜你喜欢
  • 2014-07-06
  • 2011-07-31
  • 2015-05-23
  • 1970-01-01
  • 1970-01-01
  • 2016-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多