我有一个像这样写的循环
for( i = (count>=0)?1:-1;(count>=0)?i<=count:i>=count;(count>=0)?i++:i--){
do_something_with( i )
}
正如您所看到的,我在循环初始化中使用了?
运算符3次。
有没有办法简化这个? 目前,cpu必须至少计算2个额外决策,最多3个额外决策 对于每次迭代。我想减少这个。
Ps:我试图避免使用if
语句。
目前我使用javascript作为语言
答案 0 :(得分:2)
您可以在循环开始时做出一次决定,并使用!=
运算符进行比较:
for (var dir = count >= 0 ? 1 : -1, i = dir; i != count + dir; i += dir){
do_something_with(i);
}
答案 1 :(得分:1)
在循环体内形成逻辑,如:
// reverse count if required
int fixedCount = count >= 0 ? count : 0 - count;
for (i = 1; i <= fixedCount; i++)
{
// reverse i if required
int fixedIndex = count >= 0 ? i : 0 - i;
do_something(fixedIndex);
}