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;
}
}
}
答案 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
仅从使用它的直接循环中断开。要打破剩余的循环,请使用goto
或flags
。如果您无法使用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;
}