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

と の値が必要ないと仮定する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 に答える