讨论:循环内套判断还是判断内套循环好?
即:
if(exp){
for(;;;)
//...Do Something When exp
}
else{
for(;;;)
//...Do Something when not exp
}
还是
for(;;;){
if(exp)
//...Do Something When exp
else
//...Do Something when not exp
}
哪个写法好一点?个人感觉第一种效率高一点。
[解决办法]
我也觉得第一种效率高,第二种每次循环都要判断一次if。
以前看到过一本书上讲,但是忘了是怎么说的,也忘了是哪本书。寒一个!!!
[解决办法]
应该是第一种效率高,特别循环次数多的情况下差别很明显。
[解决办法]
第一种效率高,但是可读性较差。
如果exp的表达式很简单,没有副作用,不发生变化(也就是Loop Invariant),很多情况现在的编译器可以自动将第二种情况转化为第一种。
[解决办法]
void f1(){/*...Do Something When exp*/}
void f2(){/*...Do Something When not exp*/}
void (*f)() = exp?f1:f2;
for(;;)
f();
[解决办法]
偏向于第一种!
[解决办法]
用第一种吧。
看看《编程珠玑》,会有点帮助。