【问题标题】:I couldn't get the point that " i "represents index inside the for loop我不明白“i”代表for循环内的索引
【发布时间】:2021-08-25 12:50:18
【问题描述】:

当我们在 for 循环中编写类似代码时

#include <iostream>
int main (){
    int n;
    cin >> n;
    int arr[n];
    For (int i =0 ; i<n ; i+2 ) {
        cin >> arr[i];
        if (arr[i] % 2 ==0) cout << "even";
        else cout << " odd" ; 
    }
    return 0;
}

在这段代码中,i 的索引是否会通过添加 3 或索引 i 的值来更新?

【问题讨论】:

  • 您的代码包含编译错误。
  • 上面写的所有内容都必须包含在那个灰色框中
  • 您好,欢迎来到 StackOverflow。请花点时间阅读这篇关于如何提问的文章stackoverflow.com/help/how-to-ask 也阅读这篇关于如何以最低要求提出一个好问题的文章stackoverflow.com/help/minimal-reproducible-example
  • 请使用代码围栏格式化您的代码,以使代码可读。
  • 请从上面的代码 sn-p 中详细解释您的问题/期望,以帮助您理解您的问题。

标签: c++14


【解决方案1】:

对于初学者来说这是一个很常见的问题。 根据您的“for loop(int i =0 ; i&lt;n ; i+2 ),您的起始索引为 0,当您执行 i+2 时,这意味着将数组索引 (i) 的值增加 2,然后在更新 i 值之后到达数组索引 2 然后 4,6,8...

看一些例子

  • i++i=i+1 -> 都表示将i 的值增加1;
  • i+2 -> 表示将i 的值增加2;
  • i+3 -> 表示将i 的值增加3;

我想读完这篇你的疑惑就清楚了

【讨论】:

  • 我认为 OP 和你都混淆了 for 循环的第三部分:而不是 i+2 它应该是 i+=2 (类似于你所做的例子)。
  • 兄弟,你没事吧。据我说,当我们写for loop 然后1+2i+=2 两者是平等的
  • 不,i+2 是一个从未使用结果的表达式(它没有分配给任何东西),而i+=2(相当于i=i+2执行分配.第一个 (i+2) 将导致警告说结果永远不会被使用,并且在执行时会进入一个永无止境的循环。
  • 对不起,我没明白你的意思。请用一些例子详细说明你的意思
  • for (int i=0; i&lt;10; i+2) { std::cout &lt;&lt; i; } 将永远打印0 并且永远不会结束,而for (int i=0; i&lt;10; i+=2) { std::cout &lt;&lt; i; } 将按预期打印02468
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 2012-02-01
  • 2023-02-10
  • 1970-01-01
相关资源
最近更新 更多