1.so break statement just break out the inner for loop or both?
for(j=0;j<n;j++)
{
for(k=0;k<n;k++)
{
if(grid[j][k]=='p')
{
x=j;
y=k;
break;
}
}
}
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
您只能突破 C 中的当前范围,因为 C 在“后进先出”系统中工作。
在 2 个循环内,您只能跳出当前所在循环的范围。因此,您需要设置一个标志,然后中断,然后在外循环中检查该标志,然后检查该标志是否存在,重置标志并中断。
break
仅从使用它的直接循环中中断。要打破剩余循环,请使用goto
or 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;
}