【问题标题】: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 是事先设置好的。

标签: c++ c visual-c++


【解决方案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 循环的操作完全无关的东西。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-24
        • 2021-05-27
        相关资源
        最近更新 更多