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】:

我不明白的是为什么会有一个“;”前面什么都没有。它是做什么的,是什么意思。

这是一个什么都不做的有效语句。

你可以在任何你喜欢的地方使用空语句。在循环结构中看到它们是很常见的。

【讨论】:

如果它什么都不做,为什么会出现呢? @BonQuiQui for 必须有 3 个部分,用 2 个分号分隔。所有 3 部分都是可选的,但分号必须保留在那里。 如果它不存在会不会更容易? @BonQuiQui 那么您将如何确定省略了 3 个部分中的哪一个? 是的,我知道了,非常感谢【参考方案5】:

i 变量必须在其他地方初始化。所以它从那里选择值,循环从 i 的值迭代。

【讨论】:

请注意,您可以在该空间中放置任何您想要的东西,包括与 for 循环的操作完全无关的东西。

以上是关于for(;i<=m;i++) 是啥意思? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

lvalue required in function main错误是啥意思?

JAVA中,返回值是啥意思?

C语言的"cls"是啥意思?

java.math.BigDecimal是啥意思

c语言:void reverse(int a[], int n)是啥意思

c 中setinfo是啥意思