Szu*_*Szu 4 c++ loops for-loop objective-c 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);
}
}
Run Code Online (Sandbox Code Playgroud)
我收到一个输出:
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
Run Code Online (Sandbox Code Playgroud)
我知道在某些程序语言中有可能确定哪个循环中断语句应该影响.是否可以调用break
停止外循环(for
带it
变量)?
Adr*_*ala 12
如果你真的想这样做,那就咬紧牙关并使用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.
Run Code Online (Sandbox Code Playgroud)
这是合法的goto
(大多数在向下的方向都是).实际上break
是一种特殊的"已批准"goto,因为C是一种最小的语言,所以在复杂的情况下你必须使用一个明确的goto.
然而,正如这里的许多人所指出的那样,如果你可以使用它会更好return.
你不应该扭曲你的程序只是为了避免goto,但在大多数情况下,这是一个线索,你的功能变得太复杂,因此应该分解.
您可以使用a bool flag
来达到目的,如下所示:
bool flag = false;
for (int it=0; it<5; it++) {
for (int it2=0; it2<5; it2++) {
if (it2==2) { flag=true; break; }
NSLog(@"it=%d it2=%d", it, it2);
}
if(flag) {break;}
}
Run Code Online (Sandbox Code Playgroud)
仅当您不能使用return
其他人指定的方法时,才应使用此方法.return
提高代码可读性.这只是一种解决方法.
该goto
方法也是有效的,但总是建议不要使用goto
,因为它会破坏控制流,如果代码足够大,可能会导致数小时的调试!