假设您有两个嵌套的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;
命令)在现场结束两个循环?
答案 0 :(得分:13)
您可以使用goto
作为:
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 ) {
goto done;
}
}
}
done:
或使用另一个变量来控制循环迭代:
int i, j; // Iterators
int done = 0;
for(i=0; i<100 && !done; ++i) {
/* do some stuff */
...
for(j=0; j<99 && !done; ++j) {
/* do more stuff */
...
if( someFunction(j,i) == 2 ) {
done = 1;
}
}
}
答案 1 :(得分:5)
我们的好朋友goto
可以为您处理!
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 */
goto ExitLoopEarly;
}
}
}
goto ExitLoopNormal;
ExitLoopEarly:
....
ExitLoopNormal:
...
答案 2 :(得分:4)
这可能是一个解决方案
function void loop()
{
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 ) {
return;
}
}
}
}
答案 3 :(得分:0)
您可以在函数中插入两个循环并使用return
void foo(){
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 ) {
return;
}
}
}
}