首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于for循环的有关问题

2012-05-01 
关于for循环的问题if(condition){for(i0i ni++){dosomething()}}else{for(i0i ni++){dootherthin

关于for循环的问题
if(condition)
{
    for(i=0;i <n;i++)
    {
        dosomething();
    }
}
else
{
    for(i=0;i <n;i++)
  {
    dootherthing();
  }
}

for(i=0;i <n;i++)
{
    if(condition)
        dosomething();
    else
        dootherthing();
}
各有什么优缺点?

[解决办法]
第一个判断少,同等情况下(n相等)执行耗时少,但是只判断一次没那么灵活,如果中途标志改了,不会动态的跟着变化;
第二个更耗时,但是更灵活,实时性好
[解决办法]
如果condition不会随着循环而发生改变,则前一个代码有更高效率。因为它只需要对condition进行一次判断。

如果condition在循环时会发生改变,则只能选择第二个代码。
[解决办法]
前者代码冗余度高,但只需要 一次判断.

后者代码冗余度低,但每次循环都需要判断,因为分支预测,速度略低.

但,在足够智能的编译器上,这两者会被优化成完全一样的代码.
此时,速度上没区别.

另:这里的假设是:condition不会随着dosomething和dootherthing发生改变
[解决办法]
第一段代码的可读性强点,而且代码执行效率高,但是冗余大
第二段代码可读性差,而且容易出错! 

个人觉得如果代码不长的话,可以采用第一种,条理清晰点!

热点排行