【发布时间】:2011-11-07 14:04:29
【问题描述】:
假设你有两个这样的嵌套 for 循环:
int i, j; // Iterators
for(i=0; i<100; ++i) {
/* do some stuff */
...
for(j=0; j<99; ++j) {
/* do more stuff */
...
if( someFunction(j,i) == 2 ) {
/* break out of both loops */
}
}
}
有没有办法(类似于break; 命令在一个循环中)在现场结束两个循环?
【问题讨论】:
-
goto很方便。 -
@robjb 我怀疑它是。这是
goto非常好的情况之一。对goto的无条件仇恨是错误的。 -
你可以将其重构为一个函数并调用return
-
绝对不是。这是C。只要goto 完全 跳出两个循环(最好是在 它们之后),它是可以接受的。在循环内跳转有点争议,而且很难做到正确:) @robjb
-
@robjb 这不是玩笑;
goto是这样做的唯一方法,没有非教条式的理由不使用它。