【发布时间】:2013-01-13 20:40:03
【问题描述】:
哪种结构更可取,为什么?
答:
if(i < 1023)
++i;
else
i = 0;
乙:
++i;
if(i == 1024)
i = 0;
C:
i = (i + 1) & 1023;
还是其他?
我喜欢替代 C,因为它很小且没有分支(因此,没有管道中断),但它执行的 AND 操作仅在每 1024 次中的 1 次中有用...
【问题讨论】:
-
如果速度比可读性更重要,我会选择 C。 AND 并不比其他选择每次进行的比较更昂贵,更不用说分支的成本了。