4

我将如何完成以下任务?

for (x=0;x<3;x++) {
    for (y=0;y<3;y++) {
        if (z == 1) {
            // jump out of the two for loops
        }
     }
}
// go on to do other things

如果 z=1,则两个 for 循环都应该停止,并且应该继续使用其他代码。这显然是我试图完成的一个过于简单的例子。(换句话说,我知道我需要初始化变量等......)

4

5 回答 5

5

假设您不需要 and 的值yx只需为它们分配将两个循环都退出的值:

for (x=0;x<3;x++) 
{
    for (y=0;y<3;y++) 
    {
        if (z == 1) 
        {
           y = 3 ;
           x = 3 ;
        }
     }
}
于 2013-10-26T06:02:16.630 回答
2

添加z到最外面的条件表达式,然后跳出最里面的循环。

for(x = 0; x < 3 && z != 1; x++) {
    for(y = 0; y < 3; y++) {
        if(z == 1) {
            break;
        }
     }
 }

当然,涉及到相当多的手动操作 - 在您提供的代码片段中,z没有更新。当然,如果这段代码能够正常工作,就必须如此。

于 2013-10-26T06:02:07.927 回答
2
for (x=0;x<3;x++) {
    for (y=0;y<3;y++) {
        if (z == 1) {
            // jump out of the two for loops
            x=y=3; //Set the x and y to last+1 iterating value 
            break; // needed to skip over anything outside the if-condition
        }
     }
}
于 2013-10-26T06:02:34.007 回答
1

拥有旗帜,并打破它

int flag=0;

for(x = 0; x < 3; x++)  
{
   for(y = 0; y < 3; y++) 
   {
       if(z == 1)
       {
          flag=1;
          break;
       }
   }
   if(flag)
     break;
 }
于 2013-10-26T06:06:30.093 回答
0

退出两个循环并避免任何可能遵循最内部循环的任何代码的好方法是将循环放在一个函数中并返回您需要的任何值。

for (x=0;x<3;x++) 
{
    for (y=0;y<3;y++) 
    {
        if (z == 1) 
        {
            return RETURN_VALUE
        }
        //avoids this code
    }
    //and this one too
}
于 2013-10-26T06:13:00.970 回答