【发布时间】:2023-03-30 07:43:01
【问题描述】:
我试图更好地理解包含某种 rand() 作为其结束条件的循环的行为。考虑以下示例:
for(int i=0; i < rand()%6+10; i++) { do something }
在这种情况下,循环将迭代 10 到 15 次。 我的问题是:终止值是否会被评估一次,然后在其余的迭代中重用?还是会在每次迭代时重新评估?
此外,这是否被认为是不好的做法?
【问题讨论】:
-
在不知道您的意图的情况下,不可能将其视为“不良做法”。这是否是“不好的做法”取决于您希望这段代码做什么。循环条件在每次迭代中进行整体评估。如果这就是你所需要的,那么你的代码就很好了。如果
<右侧的表达式总是计算为相同的值,则代码将毫无意义。但是rand()不会计算到相同的值,这意味着上面的代码并不是没有意义的。如果您确实想要在每次迭代时重新生成完成条件,那么代码就完美了。 -
考虑
for (int i = 0, i_end = blah; i != i_end; i++)
标签: c++ loops random iteration