【发布时间】:2021-12-18 01:23:55
【问题描述】:
是否有可能有一个从范围中间开始的 for 循环,然后循环到范围的开头并继续直到它遍历整个范围?例如,假设我们的范围是 0 到 63,我希望循环从 22 开始,继续循环直到达到 63,然后从 0 开始并循环直到达到 21。这可以用 for 循环吗?或者我需要一个while循环吗?
【问题讨论】:
-
这在
for循环或while循环中都是可行的。这两种循环类型可以互换。 -
是的,使用
i = (i+1) % length之类的东西来迭代。 -
你尝试了什么?为什么它不起作用?有几种可能的解决方案,例如,您可以简单地使用两个循环,或者添加偏移量并使用 '%' 运算符,正如 500-InternalServerError 所建议的那样,我相信还有更多方法。
-
无论您的目标是什么,您都在循环 64 次迭代。所以当然
for循环会起作用。 -
您可以在
int lo = 0; int hi = 63; int start = 22; for (int i = 0; i < (hi - lo + 1); i++) { int index = (start - lo + i) % (hi - lo + 1) + lo; …use index… }上使用一些变体,这将适用于您的序列,也适用于lo = 27、hi = 41和start = 36的序列(产生36、37、38、 39, 40, 41, 27, 28, 29, 30, 31, 32, 33, 34, 35 如果您只是在循环中打印index的值)。没有循环变量i有很多方法可以做到这一点,但是要正确地获得包装和终止条件要困难得多。
标签: c++ c loops for-loop range