循环中存在多个条件

Multiple condition in for loop

本文关键字:条件 存在 循环      更新时间:2023-10-16

在今天的一次代码审查中,我遇到了一个循环,看起来像这样:

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循环检查中使用多个条件时,是否有需要注意的陷阱

有些"极端分子"将breakcontinue视为"被指控的"goto的另一个词。许多Pascal/DDelphi程序员都属于这一派。

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

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

我不认为有任何陷阱。如果你的编译器不是太笨,它会确定这些标志的用法,并重写到代码中使用正确的跳转。

使用这样的标志(至少)有一个优点:它将更容易证明代码的正确性,例如使用霍尔演算。

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