如何从 if 语句中"break"?

How do I "break" out of an if statement?

本文关键字:break 语句 if      更新时间:2023-10-16

我有一个 if 语句,我想"打破"出来。 我知道休息只是为了循环。 谁能帮忙?

对于那些需要我正在尝试做的事情的示例:

if( color == red )
{
...
if( car == hyundai ) break;
...
}

嵌套的 ifs:

if (condition)
{
    // half-massive amount of code here
    if (!breakOutCondition)
    {
        //half-massive amount of code here
    }
}

冒着被否决的风险 - 这在过去发生在我身上 - 我会提到另一个(不受欢迎的(选择当然是可怕的goto;中断声明只是伪装的goto。

最后,我将回应一个普遍的观点,即您的设计可能会得到改进,这样大量的if语句就没有必要了,更不用说打破它了。 至少你应该能够提取几个方法,并使用返回:

if (condition)
{
    ExtractedMethod1();
    if (breakOutCondition)
        return;
    ExtractedMethod2();
}
if (test)
{
    ...
    goto jmp;
    ...
}
jmp:

哦,为什么不:)

您可能需要将

if 语句分解为更小的部分。话虽如此,您可以做两件事:

  • 将语句包装成do {} while (false)并使用真实break(不推荐!!巨大的笨拙!!(

  • 将语句放入其自己的子例程中并使用return 这可能是改进代码的第一步。

我不知道

你的测试条件,但一个好的旧switch可以工作

switch(colour)
{
  case red:
  {
    switch(car)
    { 
      case hyundai: 
      {
        break;
      }
      :
    }
    break;
  }
  :
}

总是有一个goto语句,但我建议嵌套一个与中断条件相反的if

您可以使用标签和goto,但这是一个糟糕的黑客。您应该考虑将 if 语句中的一些内容移动到单独的方法中。

||&&运算符是短路的,因此如果||的左侧计算结果为 true&&左侧的计算结果为 false,则右侧将不会计算。这相当于休息。

除非使用 goto,否则您无法中断 if 语句。

if (true)
{
      int var = 0;
      var++;
      if (var == 1)
          goto finished;
      var++;
}
finished:
printf("var = %dn", var);

这将给出"var = 1"作为输出

你想跳到的点和旁边有一个标签,如果使用goto

if(condition){
     if(jumpCondition) goto label
}
label:
你可以

使用gotoreturn,或者调用abort ()exit ()等。