编辑:n是常数。它在循环内部没有变化。
考虑到2个案例:
1)
if (n % 2 == 0)
for(i = 1; i <= 10; i++)
...
else
for(i = 1; i <= 9; i++)
...
2)
for(i = 1; i <= 9 + (n % 2 == 0); i++)
...
两种情况之间的时间有差异吗? (案例2)如果n
是偶数(或只是一个附加条件),则验证每一步应该使程序运行得慢一点,我是否正确?
答案 0 :(得分:4)
验证每一步,如果n是偶数(或只是一个附加条件),运行程序会慢一点,我是否正确?
一般情况下是,在这种特殊情况下,它取决于你是否可以更改n
内部循环和什么是n
,即编译器可以检测到n
是否可以更改或不优化它。所以你应该为读者和编译者明确你的意图:
auto limit = 9 + (n % 2 == 0);
for(i = 1; i <= limit; i++)
...