for循环中的多个条件

时间:2013-11-19 18:28:48

标签: c++ c

在今天的代码审查期间,我遇到了一个如下所示的循环:

for(int i=0; i<some_value && !found ; ++i)
{
  if(some logic)
    {
    do_stuff();
    found=true;
    } 
}

我通常会编码这种性质的东西:

for(int i=0; i<some_value; ++i)
{
  if(some logic)
    {
    do_stuff();    
    break;
    } 
}

我已编程多年,直到今天才在for循环中看到多个条件。我理解它是完全有效的代码,因为&&只是被评估并返回结果,我根本没想过使用多个条件中使用for语句而不是正文。

我直到今天才看到这一点,因此必须假设它不常见。

在for循环检查中使用多个条件时是否有任何陷阱需要注意?

2 个答案:

答案 0 :(得分:2)

“极端分子”breakcontinue视为"accursed" goto的另一个词。许多Pascal / Delphi程序员都属于这个派系。

如果你应该使用这样的标志,这取决于你的编码约定。我想如果你在非学术背景下编写这样的代码,人们就不会认真对待你。请注意!

当然,如果你想退出外循环,你需要这样的标志,如果你的语言不知道标记的循环。例如JavaScript和Java(我认为PHP也是如此)支持标记循环。

我认为没有任何陷阱。如果您的编译器不是太愚蠢,它将确定这些标志的用法,并重写代码以使用正确的跳转。

使用这样的标志(至少)有一个好处:更容易证明代码的正确性,例如:使用Hoare calculus

答案 1 :(得分:1)

您好回答您的问题,我是计算机科学专业的大四学生。我个人更喜欢在for循环中有多个约束。我觉得它有助于调试和保持低错误。它更依赖资源吗?我不太确定。