我正在准备一些代码:
for(int a = 1; a <= 100; a++) //loop a (main loop) { for(int b = 1000; b <= 2000; b++) //loop b { if(b == 1555) break; } for(int c = 2001; c <= 3000; c++) //loop c { . . . } }
我想通过使用break来打破主循环(循环变量int a);语句在b循环(循环变量int b)中.
我该怎么做?
解决方法
我建议将代码重构成一个函数.那么你可以从该函数返回,而不是使用break:
void myFunc() { for(int a = 1; a <= 100; a++) //loop a (main loop) { for(int b = 1000; b <= 2000; b++) //loop b { if(b == 1555) // Logic is just an example,return; // since it will always return } . . . } }
这 – 或者甚至是更重要的重构代码 – 应该适用于一个干净,优雅的解决方案.或者,如果您只想快速修复,可以使用条件变量:
for(int a = 1; a <= 100; a++) //loop a (main loop) { bool cond = false; for(int b = 1000; b <= 2000; b++) //loop b { if(b == 1555){ cond = true; break; } } if (cond) break; . . . }
其他人建议使用goto.虽然这是另一个快速解决方案,但我强烈建议您反对,特别是如果您在严格的环境中工作,该代码将经过同行评审并在道路上使用多年.
在我看来,goto方法比函数/返回重构更难维护,特别是当别人更改代码时.此外,您将必须证明goto给球队上任何其他人偶然绊倒代码.
原文地址:https://www.jb51.cc/c/112167.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。