这个循环语句是否正确?如果不正确那么有什么替代方法?我正在尝试像这样的 o(n) 循环语句-
for(int i=0 ; i<n ; i++ , j=n ; j<n*2 ; j++){
continue;
}
Run Code Online (Sandbox Code Playgroud)
Som*_*ude 10
你似乎想要的是:
for (int i = 0, j = n; i < n && j < n * 2; ++i, ++j)
{
continue;
}
Run Code Online (Sandbox Code Playgroud)
为了帮助你更好地理解我做了什么,为什么,以及你将来如何做这样的转换,你需要了解for编译器是如何真正处理循环的:作为一个特殊的while循环。
例如,如果你有
for (a; b; c)
{
d;
}
Run Code Online (Sandbox Code Playgroud)
那么这相当于:
{
a;
while (b)
{
d;
c;
}
}
Run Code Online (Sandbox Code Playgroud)
如果我们以while循环的形式采用您(可能)想要的东西,那么它将是
{
int i = 0, j = n; // a in my example above
while (i < n && j < n * 2) // b in my example above
{
continue; // d in my example above
++i, ++j; // c in my example above
}
}
Run Code Online (Sandbox Code Playgroud)
现在很容易将其转换为for我最初展示的循环。
如评论中所述,while此处显示的循环有点误导,因为它实际上不会进行增量。但是我假设您的真实循环没有无条件continue语句作为主体中的唯一语句。那会使循环变得毫无意义。然而,这个原则仍然有效,即使这个例子不是。
Sou*_*osh 10
该构造是错误的,您不能在一个构造中包含两个循环,但是您可以有多个变量来控制迭代。
例如,你可以有
i和j,用某些值初始化。i和j(以及其他,如果已定义)的操作和条件检查。i和j (以及其他,如果已定义)的增量或减量。示例构造可以是:
for (int i = 0, j = n; i < n && j < n * 2; ++i, ++j)
|^^^^^^^| -------- variable modification
| | |^^^^^^^^^^^^^^^^^| ---------------- loop condition
|^^^^^^^^^^^^^^^|--------------------------------------- initialization
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
166 次 |
| 最近记录: |