如何从 if 语句中"break"?
How do I "break" out of an if statement?
我有一个 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:
你可以
使用goto
、return
,或者调用abort ()
、exit ()
等。
相关文章:
- 我的简单if-else语句是如何无法访问的代码
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 线程,如果else语句,都是错误的上下文切换后,会发生什么
- 为什么是0;C++中的有效语句
- Insert函数不适用于2 if语句C++
- If语句未被求值C++
- C++嵌套if语句,基本货币交换
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 是否可以使用if constexpr删除控制流语句
- 无法理解此 return 语句的功能,没有它就会发生运行时错误
- 我的 break 语句没有中断 for 循环
- 为什么我不能在C++的三元条件语句中使用 "break" 语句?
- 有没有办法使用 break 语句来解决
- C++break语句替换
- 在循环重复两次之前,break 语句不起作用
- 错误:break语句不在循环中,而实际上它在循环中
- 如何从 if 语句中"break"?
- 编写解释器——为break语句确定循环目标
- Break语句不工作
- 如何使用 break 语句停止内部和外部循环