如何从if语句中“打破”?

我有一个如果我要“打破”的声明。 我明白,rest只是为了循环。 谁能帮忙?

对于那些需要我想要做的事情的例子:

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 ; rest声明只是变相的转折。

最后,我会回应一下你的devise可能会有所改进的普遍情绪,以便大量的if语句不是必须的,更不用说打破它了。 至less你应该能够提取几个方法,并使用返回:

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

哦,为什么不:)

你可能需要把你的if语句分解成更小的部分。 这就是说,你可以做两件事情:

  • 把声明包装成do {} while (false)并使用real break (不推荐!!!巨大的kludge !!!)

  • 把语句放到它自己的子程序中并使用return这可能是改进代码的第一步。

除非你使用goto,否则你不能打破if语句。

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

这会给“var = 1”作为输出

总是有一个goto语句 ,但我会build议嵌套一个if与破坏条件的逆。

你可以使用标签和goto ,但这是一个不好的破解。 你应该考虑移动if语句中的一些东西来分离方法。

||&&运算符是短路的,所以如果||的左侧 评估为true或左侧&&评估为假,右侧将不被评估。 这相当于rest。

有一个标签 ,你想跳转到一边,如果使用goto

 if(condition){ if(jumpCondition) goto label } label: 

你可以使用gotoreturn ,也可以调用abort ()exit ()

我不知道你的testing条件,但一个好的旧switch可以工作

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