查找for循环是否已完成的最佳实践

时间:2014-02-20 03:21:06

标签: c logic

如果我有一个函数f1可以扫描for循环中的内容:

// f1:

for(i=0;i<7;i++) {
   //If conditions match Do things
   break;
}

建议用什么方法来保存跟踪扫描是否完全完成的标记?如果我使用这样的标志:

if(i==6) {
  flag=1;
}

我应该保留标志extern / global,还是应该将其包含在某个功能中?

允许检查for循环是否已完全运行一次的最佳方法是什么?

2 个答案:

答案 0 :(得分:3)

我认为这是个人风格的问题,或者是贵公司,大学,班级等的标准规定的风格。话虽如此,我个人更喜欢以下“模式”,当我想要在满足某个条件时突破循环(或者如果整个循环完成而没有满足该条件):

int found = 0;

for (int i = 0; !found && i < max; i++)
{
    if ( // condition I want )
    {
        found = 1;
    }
}

if (found)
    // do something
else
    // condition was never met

我个人不喜欢在循环中使用break语句,因为(类似于goto)您希望避免从正常的执行流程中引入突然中断。这使代码更易读和可维护。但这只是一种意见,所以你可以在这方面下定决心。

答案 1 :(得分:2)

对于for循环,您可以通过检查是否已达到终止条件来检查是否所有循环都已完成。如果尚未达到终止条件,则必须提前跳出循环(使用breakgoto)。

只要您的循环体不会强制终止条件作为一种提前离开循环的方式,这种策略就可以完美地运作。

只要你在做一个关于做什么的本地决定,除了局部变量之外不需要任何其他东西。使用全局变量来存储标志仅对打算影响全局行为的标志有用。