所以break语句只是在c中打破内部for循环或两者

时间:2013-08-11 13:08:40

标签: c loops break

1.so break语句只是打破内部for循环或两者兼而有之?

for(j=0;j<n;j++)
{
    for(k=0;k<n;k++)
    {
        if(grid[j][k]=='p')
        {
            x=j;
            y=k;
            break;
        }
    }
}

3 个答案:

答案 0 :(得分:2)

break只会打破内循环。如果您需要在找到元素后立即爆发,请使用goto。虽然在这种情况下您可以使用其他技术(例如设置标志)来避免goto。在我看来,goto是这种用法中的干净选择,特别是当循环深度嵌套时。

for(j=0;j<n;j++)
{
    for(k=0;k<n;k++)
    {
        if(grid[j][k]=='p')
        {
            x=j;
            y=k;
            goto found;
        }
    }
}
found:
//other processing

答案 1 :(得分:0)

您只能在C中使用“后进先出”系统中的当前范围。

在2个循环中,你只能打破你当前所在循环的范围。所以你需要设置一个标志然后中断,然后在外循环中检查那个标志然后如果那样标志存在,重置标志并中断。

答案 2 :(得分:0)

break仅从使用它的直接循环中断开。要打破剩余的循环,请使用gotoflags。如果您无法使用goto,请设置标志。以下是使用标志时代码的外观:

int flag = 0; //set a flag and initialize it to zero
for(j=0;j<n;j++)
{
  for(k=0;k<n;k++)
   {
     if(grid[j][k]=='p')
      {
        x=j;
        y=k;
        flag = 1;  // set flag to 1
        break;
      }
    if (flag == 1) break;
   }  
 if (flag == 1) break;   
}