c++ - 如何使用 break 语句停止内循环和外循环

标签 c++ objective-c loops for-loop break

<分区>

我有非常简单的代码,我在内部循环中使用 break:

for (int it=0; it<5; it++) {
    for (int it2=0; it2<5; it2++) {
        if (it2==2) 
            break; //break here not it2, but it loop
        NSLog(@"it=%d it2=%d", it, it2);
    }
}

我收到一个输出:

it=0 it2=0, it=0 it2=1, 
it=1 it2=0, it=1 it2=1, 
it=2 it2=0, it=2 it2=1,
it=3 it2=0, it=3 it2=1,
it=4 it2=0, it=4 it2=1

我知道在某些程序语言中有可能确定哪个循环中断语句应该影响。是否可以调用 break 来停止外部循环(forit 变量)?

最佳答案

如果你真的想这样做,那就硬着头皮使用goto

for (int it=0; it<5; it++) {
    for (int it2=0; it2<5; it2++) {
        if (it2==2) 
            goto end_outer_loop;
        NSLog(@"it=%d it2=%d", it, it2);
    }
}

end_outer_loop:

// more stuff here.

这是一个合法的goto(大多数向下方向的goto都是)。事实上,break 是一种特殊的“批准的”goto,并且由于 C 是一种最小化语言,您必须在复杂情况下使用显式 goto。

但是正如这里的许多人所指出的,如果您可以使用return 会更好。您不应该扭曲您的程序只是为了避免goto,但在大多数情况下,这表明您的函数变得过于复杂,因此应该分解。

关于c++ - 如何使用 break 语句停止内循环和外循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22962811/

相关文章:

ios - React native 套接字未在发布版本(IOS)中初始化

c# - 用于查找所有2的C#数组

Python 2.5 for 循环

c++ - 我如何分配一个字符串来提升 beast multi_buffer?

c++ - 光线追踪器 : High FOV distortion

iphone - iOS - 当 AFHTTPClient 完成所有操作时如何获得通知

ios - Imagga.com 图像识别/内容 - 图像上传失败,请求超时

c++ - 如何比较 vector 和数组?

c++ - 为什么在这种情况下创建临时实例不起作用?

javascript - 使用 Javascript 在特定数组值之前添加所有数组值