我想去掉这个goto
语句。谁能告诉我这是什么逻辑。下面的代码不是我想修改的代码,但它将支持我的问题。在评论这篇文章时,请不要问代码的重要性,因为它只是一个例子。
int result[i][j];
for (int i = 0; i<100; i++)
{
for (j = 0; j<100; j++)
{
result[i][j] = j++;
if (j == 80)
goto break1;
}
}
break1:
…;
字符串
7条答案
按热度按时间5jdjgkvh1#
把这些循环放在一个函数中,给予它一个合适的名字,完成后给它一个
return;
。如果它足够复杂,需要两个循环,那么它应该有一个名字。finished标志很难读取,因此无论如何都应该将该构造放在它自己的函数中,使其过时。
异常仅适用于无法在本地处理的错误。使用它们来通知更高级别的功能,您无法修复的事情出错了,而不是应该发生的事情发生了。
jvidinwx2#
我认为有三种可能的解决办法。
1.将代码放入一个函数中,并将该函数保留为
return
1.使用一个“完成”的旗帜,就像已经在Michel Keijzers,Bas in het费尔德和EvilTeach的答案中演示的那样。
1.(仅限C++)用try-catch-block包围代码段,当你想离开代码时抛出和异常。但请记住,异常通常用于错误处理。因此,只有当终止循环是错误条件的结果时,才应该使用此模式。
yk9xbfzb3#
由于您要中断两个循环,因此必须通知外部循环。您可以使用一个布尔值来检查:
字符串
pvcm50d14#
使用布尔值来中断for循环。
字符串
(note:未在真实的编译器上测试)。
nbnkbykc5#
我有时喜欢改变控制变量
字符串
tzxcd3kk6#
字符串
知道这是一个老问题但可以简单修改
f87krz0w7#
字符串
break语句中断内部循环。将i设置为100,会导致外部循环结束。