如果value为true,则退出两个for循环

时间:2013-10-26 05:59:39

标签: c loops

我如何完成以下操作?

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循环都应该停止,并且应该继续使用其他一些代码。这显然是我想要完成的一个过于简单的例子。 (换句话说,我知道我需要初始化变量等...)

5 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:2)

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

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

当然,还有相当多的手工操作 - 在您提供的代码段中,z没有更新。当然,如果这段代码可行,那就必须这样做。

答案 2 :(得分: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
        }
     }
}

答案 3 :(得分: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;
 }

答案 4 :(得分: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
}