标签: break

如何继续工作?

我试图了解"继续"的工作原理.我理解了关键字的概念,但是当我运行不同的程序时,它的工作方式不同: - /让我向您展示一些示例:

如果我运行这个程序:

int j = 0;
int i = 0;
LABEL1: for (; i < 3; i++) {
  if (true)
    continue;
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,我的价值将是3.让我们添加一个外循环:

int j = 0;
int i = 0;
LABEL2: for (; j < 3; j++) {
  LABEL1: for (; i < 3; i++) {
    if (true)
      continue LABEL2;
  }
}
Run Code Online (Sandbox Code Playgroud)

我的价值将是... 0 !! 我不明白为什么如果继续使用带有转到外部循环的标签,我不会增加.有人能解释一下为什么吗?你有一些棘手的东西吗?还是做了一段时间?

我非常感谢您提供的任何帮助.

java for-loop continue break while-loop

29
推荐指数
4
解决办法
4762
查看次数

从该循环中调用的函数中断开循环

我正在试图找出一种方法来摆脱for在该循环中调用的函数内的循环.我知道有可能让函数返回一个值,然后检查一个特定的值然后中断,但我想直接从函数内部执行.这是因为我使用内部库来处理特定的硬件,要求我的函数的函数签名如下所示:

void foo (int passV, int aVal, long bVal)
Run Code Online (Sandbox Code Playgroud)

我知道不使用返回值是非常糟糕的做法,但是有很多情况迫使我这样做,所以请耐心等待.

考虑以下示例:

#include <stdio.h>

void foo (int a) {
    printf("a: %d", a);
    break;
}

int main(void) {
    for (int i = 0; i <= 100; i++) {
        foo(i);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在这不编译.相反,我得到一个编译错误如下:

prog.c:在函数'foo'中:prog.c:6:2:错误:break语句不在循环或switch break中;

我知道这意味着什么(编译器说中断foo()不在for循环中)

现在,我可以从关于break语句的标准中找到的是:

break语句使控制权传递给最内部封闭while,do,for或switch语句之后的语句.语法只是简单;

考虑到我的函数是从for循环中调用的,为什么break语句不能说出for循环?此外,是否有可能在不首先返回功能的情况下实现这样的功能?

c for-loop break

29
推荐指数
5
解决办法
1万
查看次数

Perl打破了If语句

刚出现这个问题:我如何突破if声明?我有一个很长的if语句,但有一种情况我可以在早期就突破它.

在循环中,我可以这样做:

while (something ) {
    last if $some_condition;
    blah, blah, blah
    ...
}
Run Code Online (Sandbox Code Playgroud)

但是,我可以使用if语句执行相同的操作吗?

if ( some_condition ) {
    blah, blah, blah
    last if $some_other_condition; # No need to continue...
    blah, blah, blah
    ...
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以将if语句放在一个块中,然后我可以突破块:

{
    if ( some_condition ) {
        ...
        last if $some_other_condition; # No need to continue...
        blah, blah, blah
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

或者,我可以创建一个子程序(可能以编程方式更好):

if ( some_condition ) {
    run_subroutine();
}

sub run_subroutine {
    blah, blah, blah
    return if $some_other_condition;
    blah, …
Run Code Online (Sandbox Code Playgroud)

perl if-statement break flow-control

27
推荐指数
1
解决办法
4万
查看次数

摆脱多个循环?

可能重复:
突破嵌套循环

我有这个代码

foreach (___)
{
    foreach (___)
    {
        foreach (___)
        {
            if (condition)
            {
                //break out of all loops
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

break只是"打破"了最内在的循环(对不起我的英语),我想把它们全部留下......

我在考虑:

  1. GOTO,但我总是被告知不要使用它
  2. 一种布尔标志

还有更优雅的方式吗?喜欢由C#提供?

在此先感谢您的帮助!

c# foreach loops goto break

26
推荐指数
4
解决办法
6799
查看次数

在红宝石中休息和归来,你如何使用它们?

我刚问了一个关于回归的问题,它似乎和休息一样.你如何使用return,以及如何使用break,例如在你编写的实际代码中解决可以使用这些结构的问题.

我不能真正发布示例,因为我不知道如何使用它们,所以它们没有多大意义.

ruby return break

25
推荐指数
2
解决办法
4万
查看次数

为什么在switch语句中返回yield后需要中断?

有人可以告诉我为什么编译器认为在以下代码break之后有必要yield return吗?

foreach (DesignerNode node in nodeProvider.GetNodes(span, node => node.NodeType != NDjango.Interfaces.NodeType.ParsingContext))
{
    switch (node.ErrorMessage.Severity)
    {
        case -1:
        case 0:
            continue;
        case 1:
            yield return new TagSpan<ErrorTag>(node.SnapshotSpan, new ErrorTag(PredefinedErrorTypeNames.Warning));
            break;
        default:
            yield return new TagSpan<ErrorTag>(node.SnapshotSpan, new ErrorTag(PredefinedErrorTypeNames.SyntaxError));
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

c# break switch-statement yield-return

24
推荐指数
2
解决办法
3628
查看次数

退出批处理文件中的FOR循环?

为什么这个批处理文件永远不会脱离循环?

For /L %%f In (1,1,1000000) Do @If Not Exist %%f Goto :EOF
Run Code Online (Sandbox Code Playgroud)

不应该Goto :EOF突破循环?

编辑:

我想我应该更明确地问... 我怎么能摆脱循环?

for-loop batch-file break

24
推荐指数
6
解决办法
9万
查看次数

Python - 所有循环中的`break`

我正在使用多个嵌套for循环.在最后一个循环中有一个if声明.当评估True所有for循环应该停止,但这不会发生.它只break离开最里面的for循环,而不是继续前进.如果break遇到语句,我需要所有循环停止.

我的代码:

for i in range(1, 1001):
    for i2 in range(i, 1001):
        for i3 in range(i2, 1001):
            if i*i + i2*i2 == i3*i3 and i + i2 + i3 == 1000:
                print i*i2*i3
                break
Run Code Online (Sandbox Code Playgroud)

python loops for-loop break python-2.7

24
推荐指数
3
解决办法
4万
查看次数

是否有相当于Java标记的C#中断或变通方法

我正在将一些Java代码转换为C#并找到一些标记为"break"的语句(例如)

label1:
    while (somethingA) {
       ...
        while (somethingB) {
            if (condition) {
                break label1;
            }
        }
     }
Run Code Online (Sandbox Code Playgroud)

在C#中是否有等价物(当前读数暗示不是),如果没有,除了(比如说)具有bool标志以指示是否在每个循环结束时断开(例如)

bool label1 = false;
while (somethingA)
{
   ...
    while (somethingB)
    {
        if (condition)
        {
            label1 = true;
            break;
        }
    }
    if (label1)
    {
        break;
    }
}
// breaks to here
Run Code Online (Sandbox Code Playgroud)

我会感兴趣的是为什么C#没有这个,因为它似乎不是很邪恶.

c# java label break

23
推荐指数
1
解决办法
8854
查看次数

如何在Perl中打破外部循环?

假设我有一段Perl代码,如:

foreach my $x (@x) {
 foreach my $y (@z) {
  foreach my $z (@z) {
   if (something()) {
    # I want to break free!
   }
   # do stuff 
  }
  # do stuff
 }
 # do stuff
}
Run Code Online (Sandbox Code Playgroud)

如果something()是真的,我想打破('最后')所有循环.

我怎样才能做到这一点?我想到了两个选项,我不喜欢这两个选项:使用一些东西GOTO 添加一个将标记的布尔变量something()为true,在每个循环恢复之前检查这个var,last()如果它是真的.

有什么建议或想法?

谢谢.

perl loops break flow-control

23
推荐指数
2
解决办法
2万
查看次数