如果我有一个函数f1
可以扫描for
循环中的内容:
// f1:
for(i=0;i<7;i++) {
//If conditions match Do things
break;
}
建议用什么方法来保存跟踪扫描是否完全完成的标记?如果我使用这样的标志:
if(i==6) {
flag=1;
}
我应该保留标志extern
/ global
,还是应该将其包含在某个功能中?
允许检查for循环是否已完全运行一次的最佳方法是什么?
答案 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
循环,您可以通过检查是否已达到终止条件来检查是否所有循环都已完成。如果尚未达到终止条件,则必须提前跳出循环(使用break
或goto
)。
只要您的循环体不会强制终止条件作为一种提前离开循环的方式,这种策略就可以完美地运作。
只要你在做一个关于做什么的本地决定,除了局部变量之外不需要任何其他东西。使用全局变量来存储标志仅对打算影响全局行为的标志有用。