for(;i<=m;i++) 是啥意思? [复制]
Posted
技术标签:
【中文标题】for(;i<=m;i++) 是啥意思? [复制]【英文标题】:What does for(;i<=m;i++) mean? [duplicate]for(;i<=m;i++) 是什么意思? [复制] 【发布时间】:2018-06-05 22:15:28 【问题描述】:我正在为我的考试而学习,我碰到了这个例子,上面写着:
for(;i<=m;i++)
我不明白的是为什么;
前面什么都没有?
它有什么作用?什么意思?
【问题讨论】:
这意味着for
语句的第一部分已经在代码中的某个地方设置了。在上下文中会更有意义 - 即提供正确的代码。
需要基础才能理解,看for循环语法:en.cppreference.com/w/cpp/language/for
就是这样——它什么也没做。分号用于告诉编译器接下来是退出循环(或不退出)的测试。据推测,i
是事先设置好的。
【参考方案1】:
for
语句具有以下语法:
for (declaration; condition; post-condition)
声明只发生一次。在每个循环开始时检查条件并确定循环是否继续,后置条件发生在循环结束时。
所有这些语句都可以省略。
你的只是一个不需要声明的 for
循环,可能是因为已经声明了某些内容,如下所示:
int i = 0;
for (;i<=m;++i)
如果您希望循环无限期运行,您可以省略第二条语句:
for (int i = 0; ;++i)
在这方面,无限循环通常写成
for (;;)
您可能希望省略后置条件,可能是因为您正在使用迭代器并在循环期间更改它
for (auto it = std::begin(v); it != std::end(v);)
【讨论】:
【参考方案2】:它是做什么的,它是什么意思?
这意味着for循环的初始化部分是空的,即循环范围内没有初始化循环变量。 这种结构在您想要在循环离开后访问循环变量的情况下最常见,例如在
int i = 7;
for(; i < 100; ++i)
if(isPrime(i)) break;
assert(i == 11); // can access i now
【讨论】:
【参考方案3】:这意味着该语句的一部分在之前的某个地方声明过。
i=0
for(;i<=m;i++)
这个循环说,每当 i 小于 m 时,我将执行代码块中的任何操作。每当我达到 m 值时,我就会停下来。在循环的每次迭代之后,它会将 i 加 1(i++),这样循环最终会在遇到 i 时停止
【讨论】:
【参考方案4】:我不明白的是为什么会有一个“;”前面什么都没有。它是做什么的,是什么意思。
这是一个什么都不做的有效语句。
你可以在任何你喜欢的地方使用空语句。在循环结构中看到它们是很常见的。
【讨论】:
如果它什么都不做,为什么会出现呢? @BonQuiQuifor
必须有 3 个部分,用 2 个分号分隔。所有 3 部分都是可选的,但分号必须保留在那里。
如果它不存在会不会更容易?
@BonQuiQui 那么您将如何确定省略了 3 个部分中的哪一个?
是的,我知道了,非常感谢【参考方案5】:
i 变量必须在其他地方初始化。所以它从那里选择值,循环从 i 的值迭代。
【讨论】:
请注意,您可以在该空间中放置任何您想要的东西,包括与 for 循环的操作完全无关的东西。以上是关于for(;i<=m;i++) 是啥意思? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
lvalue required in function main错误是啥意思?